我正在使用不同版本的不同表格中进行大量观察。
我将使用约会%let date_to_view = "20JAN2014:16:10"dt;
但是如何将这个日期转换成SAS格式?
我知道如何转换SAS数据类型(使用proc sql):
dhms("01JAN1970'd,3,0,i.valid_dttm/1000) format datetime20.
我看到日期20JAN2014:16:34:10
是1390224849927
但是如何将其转换为代码?
答案 0 :(得分:3)
在公式dhms("01JAN1970'd,3,0,i.valid_dttm/1000)
中,您将一个数字表示自01JAN1970以来的毫秒数转换为SAS日期时间值,该值表示自01JAN1960以来的秒数。你似乎也增加了3个小时。
所以听起来你的问题是如何将SAS DATETIME值转换为Unix时间戳值。所以只需反转算术。
您要从Unix时间戳转换为SAS日期时间的公式是:
sasdt2 = '01JAN1970:00:00'dt + '03:00't + unix_timestamp2/1000 ;
因此,要将SAS日期时间值转换为Unix时间戳,请使用:
unix_timestamp1 = 1000*(sasdt1 - '01JAN1970:00:00'dt - '03:00't) ;
答案 1 :(得分:1)
" 20JAN2014:16:10" dt已经采用正确的SAS日期(日期时间)格式,但作为日期字面值。 SAS将其存储为一个数字,表示自01JAN1960:00:00:00以来的秒数。
如果您只想要日期时间的日期部分,请使用datepart()
功能,并相应地格式化结果,例如: date9.
。
data want ; dt = "20JAN2014:16:10"dt ; date = datepart(dt) ; format dt datetime19. date date9. ; /* To have 'date' show as the unformatted value, simply remove the format */ format date best32. ; run ;