SQL/SAS中不同格式日期变量的条件判断与日期调整问题
SAS日期列处理:匹配日期部分后增加一天
针对你的需求,这里提供两种SAS实现方式,分别用DATA步的IF语句和PROC SQL的CASE WHEN语句:
核心逻辑说明
Conversion_Date是datetime类型(对应ymdhms.格式),需要用datepart()函数提取其日期部分,转换为SAS date类型后和click_date(date类型,date9.格式)比较。- 若日期部分匹配,给
Conversion_Date增加1天:用intnx('dtday', 日期时间变量, 1)函数可以直接对datetime类型执行加一天操作,保持时分秒不变;也可以直接加86400(一天的秒数),效果一致。
方法1:DATA步中使用IF语句
data want; set have; /* 比较两个日期的日期部分 */ if datepart(Conversion_Date) = click_date then Conversion_Date = intnx('dtday', Conversion_Date, 1); /* 保留原格式输出 */ format Conversion_Date ymdhms. click_date date9.; run;
方法2:PROC SQL中使用CASE WHEN语句
proc sql; create table want as select click_date, /* 判断日期部分是否匹配,匹配则加一天 */ case when datepart(Conversion_Date) = click_date then intnx('dtday', Conversion_Date, 1) else Conversion_Date end as Conversion_Date format=ymdhms. from have; quit;
示例验证
假设你的数据中:
Conversion_Date为10/28/2022 02:03:49(ymdhms.格式)click_date为28OCT2022(date9.格式)
经过上述代码处理后,Conversion_Date会被更新为10/29/2022 02:03:49,符合你的需求。
内容的提问来源于stack exchange,提问作者willd9
相关产品推荐
相关产品推荐

