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

Oracle SQL转换epoch时间为标准日期格式报错问题咨询

错误原因分析
  • 你的SQL语句中引用了CreationDate字段,但你明确说明table1表仅包含ID、EpochDate两个字段,引用不存在的字段会直接触发语法报错
  • Oracle中转换Unix Epoch时间(以秒为单位,从1970-01-01 00:00:00 UTC开始计数)的标准逻辑是基于1970-01-01的基准日期做偏移计算,你原有的波斯历转换逻辑没有对应字段支撑,本身也不匹配Epoch转日期的需求
修复后的SQL方案

方案1:转换为标准公历日期时间

SELECT 
  ID,
  EpochDate,
  TO_DATE('1970-01-01', 'YYYY-MM-DD') + EpochDate/86400 AS 标准公历日期时间
FROM table1;

说明:86400为一天的总秒数,直接用基准日期加秒数偏移即可得到正确的公历时间。

方案2:需要输出波斯历格式的日期时间

如果需求是最终展示为波斯历时间,在转换得到公历时间后再做日历转换即可:

SELECT 
  ID,
  EpochDate,
  TO_CHAR(TO_DATE('1970-01-01', 'YYYY-MM-DD') + EpochDate/86400, 'YYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=PERSIAN') AS 波斯历日期时间
FROM table1;
测试数据验证结果

基于你提供的测试数据,运行上述SQL后可得到正确转换结果:

  • ID=100,EpochDate=16811048:对应公历时间为1970-07-14 15:04:08
  • ID=101,EpochDate=16810904:对应公历时间为1970-07-14 14:41:44
  • ID=102,EpochDate=12924715:对应公历时间为1970-05-30 15:31:55
  • ID=103,EpochDate=15667117:对应公历时间为1970-07-01 05:18:37

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:54:02