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

如何将19JUL2023:00:00:00转换为2023-07-19 00:00:00格式的SAS日期时间

SAS日期时间格式转换:19JUL2023:00:00:00 → 2023-07-19 00:00:00

要实现这种格式转换,核心分两步:将源字符型日期时间转为SAS原生datetime数值,再将SAS datetime值格式化为目标字符串,以下是两种实用方案:

方法1:拆分拼接日期时间分量

通过拆分SAS datetime的日期、时间部分,分别格式化后拼接成目标样式:

data _null_;
    /* 替换为你的源日期时间变量或字符串 */
    source_dttm_str = '19JUL2023:00:00:00';
    
    /* 把字符串转成SAS datetime数值型变量 */
    sas_dttm = input(source_dttm_str, datetime20.);
    
    /* 分别格式化日期和时间,拼接成目标格式 */
    target_dttm_str = catx(' ', 
                          put(datepart(sas_dttm), yymmdd10.),  /* 日期转2023-07-19 */
                          put(timepart(sas_dttm), time8.)     /* 时间转00:00:00 */
                         );
    
    /* 存入宏变量(匹配你的原有需求) */
    call symput('from_batch_dttm_orcl', target_dttm_str);
run;

方法2:创建自定义格式(更简洁)

通过proc format定义专属datetime格式,一次性输出目标样式:

/* 定义自定义datetime格式 */
proc format;
    picture dttm_orcl
        low-high = '%Y-%0m-%0d %0H:%0M:%0S'  /* 指定输出模板 */
        (datatype=datetime);  /* 声明格式作用于datetime类型 */
run;

data _null_;
    source_dttm_str = '19JUL2023:00:00:00';
    sas_dttm = input(source_dttm_str, datetime20.);
    
    /* 直接用自定义格式输出 */
    target_dttm_str = put(sas_dttm, dttm_orcl.);
    call symput('from_batch_dttm_orcl', target_dttm_str);
run;

针对你现有代码的补充说明

如果1958774400是UNIX时间戳(自1970-01-01 00:00:00起的秒数),需先转成SAS datetime值:

sas_dttm = 1958774400 + '01JAN1970:00:00:00'dt;

之后再用上述任意方法格式化即可。

内容的提问来源于stack exchange,提问作者Arun P.A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:05:16