我期待将格式为CYYMMDD(其中C对于20世纪为0或对于21世纪为1)的日期转换为标准SAS日期。该代码将放置在使用'proc sql'的SAS查询中,以便它可以将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)
首先,没有必要包围单引号和'N'预选赛SAS变量名; 'EffectDate'就好了。它是什么类型的变量(字符或数字)? – BellevueBob 2013-02-18 00:39:49
这些报价是从玩游戏中剩余的 - 这只是在那个声明中。该变量是数字。它是格式为“Example”中列出的输入数据 – 2013-02-18 00:45:23
对不起,这是如此复杂,但两个LIBREFS“SOURCE”和“EGTASK”是指什么?它们是不同的DB2连接还是一个SAS库? – BellevueBob 2013-02-18 01:43:34