Я ищу для преобразования даты, которая находится в формате CYYMMDD (где C - 0 для 20-го века или 1 для 21-го века) до стандартной даты SAS. Этот код будет помещен внутри запроса SAS с использованием «proc sql», чтобы он мог сравнивать дату SAS с датой, хранящейся в DB2.Преобразование CYYMMDD в SAS Дата в DB2 через SAS
Пример: Ввод данных = 1130101, выход = '1Jan2013'd
Примеры Я попытался это:
(substr(t1.'EffectDate'n,4,2)|| '/' || substr(t1.'EffectDate'n,6,2) || '/' || cast(substr(t1.'EffectDate'n,1,3) AS INTEGER) + 1900)
Это не в функции литая() (кажется, что не существует ?)
Также пробовал:
convert(varchar(10), convert(datetime, right(t1.'EffectDate'n, 6), 12), 101)
Но VARCHAR (10) не существует.
Мой запрос выглядит следующим образом:
proc sql;
create table CLAIMS as select
t1.CID,
t1.MID,
t1.DOS
OTHER_TABLE.ChangeDate AS EffectDate
FROM
SOURCE.REJECTED t1
INNER JOIN
EGTASK.OTHER_TABLE
ON
t1.DOS >= *Converted_Date*
[... goes on a couple more lines...]
Где * Converted_Date * это то, что мне нужно.
(Тем не менее, я должен уточнить, что этот конкретный запрос/объединения не обязательно должен быть SQL)
Во-первых, нет никакой необходимости, чтобы окружить имя переменной SAS с апострофы и 'n' классификатором; «Эффект» отлично. Какая переменная это (символ или число)? – BellevueBob
Кавычки оставались в стороне от игры - это только так в этом заявлении. Переменная является числовой. Он находится в формате входных данных, перечисленных в «Пример» –
Извините, что это так сложно, но что означают два LIBREFS «SOURCE» и «EGTASK»? Являются ли они разными соединениями DB2 или являются ли они библиотекой SAS? – BellevueBob