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

如何使用SQL将SAS时间戳转换为标准时间戳

在SAS SQL中转换SAS时间戳为标准格式

要把28JUL14:11:07:17这类SAS时间戳字符串转换成2014-07-28 11:07:17.0的标准格式,你可以通过两步处理:先将字符型时间戳解析为SAS内部的datetime数值,再格式化为目标字符串。

以下是具体的SAS SQL代码示例:

PROC SQL;
    SELECT 
        original_ts,
        -- 第一步:把字符时间戳转成SAS datetime数值(内部存储为1960年1月1日以来的秒数)
        INPUT(original_ts, DATETIME15.) AS dt_value,
        -- 第二步:拼接日期和时间部分,生成目标格式
        PUT(INPUT(original_ts, DATETIME15.), YYMMDD10.) || ' ' || PUT(INPUT(original_ts, DATETIME15.), TIME10.1) AS standard_timestamp
    FROM your_table;
QUIT;

代码细节解释

  • INPUT(original_ts, DATETIME15.):这个函数专门匹配你输入的DDMONYY:HH:MM:SS格式(比如28JUL14:11:07:17刚好是15位长度),把字符串转成SAS能识别的datetime数值。
  • PUT(dt_value, YYMMDD10.):将datetime数值格式化为YYYY-MM-DD的日期字符串(例如2014-07-28)。
  • PUT(dt_value, TIME10.1):提取datetime里的时间部分,格式化为HH:MM:SS.1,确保秒数后保留一位小数(哪怕是0,也会显示.0)。
  • || 字符串拼接:把日期和时间部分用空格连接,得到你需要的完整标准时间戳。

简化写法(复用中间结果)

如果不想重复调用INPUT函数,可以用CALCULATED关键字复用已经计算出的dt_value:

PROC SQL;
    SELECT 
        original_ts,
        INPUT(original_ts, DATETIME15.) AS dt_value,
        PUT(CALCULATED dt_value, YYMMDD10.) || ' ' || PUT(CALCULATED dt_value, TIME10.1) AS standard_timestamp
    FROM your_table;
QUIT;

额外提示

如果你的original_ts本身就是SAS的datetime数值型(不是字符串),直接跳过INPUT步骤,用PUT函数格式化即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:37:27