2015-05-22 180 views
0

你好,我想設置一個日期01/02/2015到01/09/2015。我正在使用一個IF語句,但我認爲,因爲該列的格式爲mmddyy10,而informat datetime20則不起作用。SAS日期時間和IF語句

列看起來像這樣

01/09/2015 
01/02/2015 
05/23-2015 

所以我希望它看起來像這樣

01/09/2015 
01/09/2015 
05/23-2015 

是否有SAS功能,可以讓我做到這一點?或者我將不得不將該列轉換爲Char,並按照這種方式執行我的If語句。

+0

INFORMAT可能是一個問題的線索,但這在技術上不是問題。 INFORMAT在輸入後無關緊要。未格式化的值是真正的日期(所以類似於20435)? – Joe

+0

另外,在可能的日期最後短跑是不可能的 - 我認爲這是一個錯誤。 – Joe

+0

設置第2到第9的邏輯是什麼? 9號不會增加,他們都是星期五的。 – Reeza

回答

0

只要它是一個日期值 - 所以未格式化的值大約是20000左右 - 你可以使用日期常量。

data want; 
    set have; 
    if datevar = '02JAN2015'd then datevar='09JAN2015'd; 
run; 

這與應用於列的格式無關。格式是而不是變量類型;這就像「當我看這個變量時,請使用這種格式很好地打印它。」所有日期的基礎價值都是相同的:自1960年1月1日以來的某些天數。

日期常數總是使用DATE9.格式(DDMONYYYY)表示。

如果它實際上是一個日期時間,那麼格式不會是MMDDYY10.,而是其他的東西。然後,您使用的日期時間常數:

if datetimevar = '02JAN2015:00:00:00'dt then ... 

或使用datepart先將其轉換爲日期。

if datepart(datetimevar) = '02JAN2015'd then ...