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

Oracle中nvarchar2类型'timestamp'列转换为日期格式的方法

解决方案

首先明确:你提供的数值-144041977是Unix时间戳(以1970-01-01 00:00:00 UTC为基准的秒数,负数代表该时间点之前的日期)。以下是具体转换方案:

核心转换语句

将nvarchar2类型的字符串转换为数值后,结合Oracle日期函数计算出可读日期:

SELECT 
    TO_CHAR(
        TO_DATE('1970-01-01', 'YYYY-MM-DD') + NUMTODSINTERVAL(TO_NUMBER("timestamp"), 'SECOND'),
        'YYYY-MM-DD HH24:MI:SS'
    ) AS readable_date
FROM 
    your_table_name;

语句说明

  1. TO_NUMBER("timestamp"):把nvarchar2类型的时间戳字符串转为数值类型,确保能进行时间运算。
  2. NUMTODSINTERVAL(..., 'SECOND'):将数值转换为秒级时间间隔。
  3. TO_DATE('1970-01-01', 'YYYY-MM-DD') + 时间间隔:基于Unix时间戳的基准日期,加上计算出的时间间隔,得到对应的Oracle日期类型。
  4. TO_CHAR(..., 'YYYY-MM-DD HH24:MI:SS'):将日期格式化为可读字符串,可按需调整格式模板(比如'YYYY-MM-DD'仅保留日期)。

异常处理建议

如果列中存在非数值格式的字符串,直接用TO_NUMBER会报错,可添加过滤逻辑:

SELECT 
    CASE 
        WHEN REGEXP_LIKE("timestamp", '^-?\d+$') THEN 
            TO_CHAR(
                TO_DATE('1970-01-01', 'YYYY-MM-DD') + NUMTODSINTERVAL(TO_NUMBER("timestamp"), 'SECOND'),
                'YYYY-MM-DD HH24:MI:SS'
            )
        ELSE '无效时间戳'
    END AS readable_date
FROM 
    your_table_name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:18:10