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

SAS Data Integration Studio中varchar转date返回1960年问题咨询

问题根因说明

你得到的01-01-1960是SAS日期类型缺失值的默认展示值,说明你使用的INPUT()函数转换逻辑执行失败返回了空值,并不是转换逻辑主动生成了该日期。

排查&解决步骤

  • 第一步:处理源字段无效字符
    源字段是varchar类型,大概率存在首尾空格、不可见字符等非预期内容,导致格式匹配失败。可以先对源字段做去空白处理再转换,代码修改为:
    INPUT(STRIP(TANGGAL_LAHIR), yymmdd10.)
    
  • 第二步:使用兼容性更强的输入格式
    如果你不能100%确定源字段的分隔符完全统一为/,可以替换为自动识别常见分隔符的ANYDTDTE10.输入格式,适配性更强:
    INPUT(STRIP(TANGGAL_LAHIR), anydtdte10.)
    
  • 第三步:检查目标字段配置
    确认SAS DI Studio中目标字段的属性设置正确:
    • 字段类型为数值型(SAS的日期类型底层为数值,存储的是距1960年1月1日的天数)
    • 字段已绑定合法的日期输出格式(如yymmdd10.、ddmmyy10.等)
    • 如果直接写入Oracle的DATE类型字段,需确认Oracle库连接的SAS/ACCESS接口配置中,DATE、DATETIME_CONVERSION等日期相关参数没有设置错误的隐式转换规则。
  • 第四步:添加脏数据兜底逻辑
    若源表存在不符合YYYY/MM/DD格式的脏数据,可以添加判断逻辑避免转换报错,同时可自定义默认值:
    /* ??参数可屏蔽转换失败的warning日志 */
    IF NOT MISSING(INPUT(STRIP(TANGGAL_LAHIR), ?? yymmdd10.)) THEN 
      target_date_col = INPUT(STRIP(TANGGAL_LAHIR), yymmdd10.);
    ELSE 
      target_date_col = .; /* 可替换为你需要的默认日期值 */
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:42:03