You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAS Enterprise Guide 8.2中用CASE WHEN创建DATE9.类型日期列?

问题解决:SAS中CASE WHEN创建日期列报错修正

错误原因

你代码里的两个问题触发了报错:

  • CASE分支返回的'01AUG2020'是字符型字符串,但你给新列col3指定了date9.日期格式,SAS不允许给字符型变量应用日期格式,因此抛出ERROR: Character expression requires a character format.。
  • 两个WHEN条件完全重复(均为col2 between '01SEP2019'd and '15SEP2019'd),第二个分支永远不会被执行,逻辑无效。

修正步骤

  1. 给CASE分支里的日期值加上'd'后缀,转为SAS日期常量(SAS日期本质是数值,代表从1960年1月1日起的天数)。
  2. 修正重复的WHEN条件,确保逻辑合理。
  3. 保留format = date9.来指定日期的显示格式。

修正后的代码

proc sql;
select 
    col1
    , case when (col2 between '01SEP2019'd and '15SEP2019'd) then '01AUG2020'd
           when (col2 between '16SEP2019'd and '30SEP2019'd) then '01OCT2020'd
      end as col3 format = date9.
from my_table;
quit;

说明

修改后,CASE语句返回的是SAS日期数值,搭配date9.格式会自动显示为DDMMMYYYY样式的日期,且新列col3的数据类型为日期型(数值型的一种),符合需求。

内容的提问来源于stack exchange,提问作者dingaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:54:42