如何将Datetime转换为SAS格式

时间:2015-09-22 09:34:36

标签: sas

我正在使用不同版本的不同表格中进行大量观察。

我将使用约会%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:101390224849927但是如何将其转换为代码?

2 个答案:

答案 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 ;
相关问题