我正在處理不同版本中的大量觀察值。如何將日期時間轉換爲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:10
是1390224849927
,但如何將它轉換成代碼?
我正在處理不同版本中的大量觀察值。如何將日期時間轉換爲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:10
是1390224849927
,但如何將它轉換成代碼?
在您的公式dhms("01JAN1970'd,3,0,i.valid_dttm/1000)
要轉換一個數字,表示自01JAN1970毫秒錶示,因爲01JAN1960的秒數SAS日期時間值的數量。你似乎也在增加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) ;
「20JAN2014:16:10」dt已經處於正確的SAS日期(日期時間)格式,但是作爲日期文字。 SAS將其存儲爲一個數字,表示從01年1月01日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 ;
日期時間值,你發佈與您發佈的整數值不匹配。你發佈的號碼太大了。 2014年1月的特定時間應該只有1,705,854,850的儲值。 – Tom