2015-05-22 183 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 ...