2017-04-05 665 views
0

我有一列包含日期值。因此,當以數字形式導入時,它顯示20668,20669 ...等。如果我將它格式化爲yymmddn8,則顯示20160802等。但是,我真正想要的是顯示20160802的數字變量。我試圖創建其他以獲取日,月,年並將它們連接起來。不幸的是,問題是如果月和日是1位數字,那麼它只會顯示201682。什麼是實現我的目標的最快方法。我想可以將日月變量變爲文本,並且如果日或月少於10則加0。但這不是優雅和高效的。請幫忙。 感謝SAS:將日期轉換爲數字

+0

我的問題是你爲什麼要改變它的值?保持日期的原樣意味着您可以使用所有相關的日期函數。如果是以這種方式顯示它們,那麼該格式就是爲此設計的 – Longfish

+1

需要更詳細的解釋。你在輸入什麼?你爲什麼要這個「數字」'20160802'?它會走到哪裏(其他dbms?)因爲它代表着你的問題聽起來像你在問什麼,你應該做什麼,除非在特定的情況下,但是你可能只是誤解了某些東西。 – Joe

回答

1

你只需換一個input周圍格式:

data test; 
    date = 20668; 
    full_date = input(put(date,yymmddn8.),best12.); 
run; 

put的日期轉換爲字符格式,你希望它出現,並inputbest12.格式轉換它回到那種格式的數字。

+0

這工作完美。非常感謝你 – duckman

+0

沒問題。我同意這些其他用戶 - 當變量是本地數字時,它看起來像一個奇怪的操作,並且您可以用任何方式「格式化」它以獲得所需的視覺輸出。 – Foxer

1

這聽起來像你只需要附加一個格式到你的變量。

format date yymmddn8. ; 

嘗試運行該程序以查看幾種可用於顯示日期的不同格式。

data _null_; 
    do date = 20668, 20669 ; 
    put (6*date) (=10. =date9. =yymmddn8. =mmddyy10. =ddmmyy10. =yymmdd10.) ; 
    end; 
run; 
+0

謝謝。我也嘗試過這些,但是我正在尋找的是一個數字變量。 @Foxer回答上面的作品。 – duckman

+0

???日期是一個數字變量。你是說你想存儲一個數字,看起來像人類可能是一個約會?所以你會將'01JAN2017'd作爲20,170,131號碼存儲? – Tom