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

如何在Firebird 4中将Epoch转换为考虑时区的Datetime?

Firebird 4 支持Epoch转带时区的Datetime吗?

是的,Firebird 4完全支持将Epoch时间转换成考虑时区的Datetime,核心依赖它引入的TIMESTAMP WITH TIME ZONE类型及相关时区转换能力。

问题分析

你当前的SQL使用无时区的TIMESTAMP类型,基准时间TIMESTAMP '1970-01-01 00:00:00'默认对应UTC时间,转换后得到的结果自然是UTC时区的时间,所以输出1970-01-02 00:00:00。而CET时区比UTC快1小时,需要显式进行时区转换才能得到期望的1970-01-02 01:00:00。

修正后的SQL语句

SELECT
    EPOCH,
    SUBSTRING(CAST(
        DATEADD(SECOND, CAST(EPOCH AS BIGINT), TIMESTAMP '1970-01-01 00:00:00' AT TIME ZONE 'UTC') 
        AT TIME ZONE 'CET' 
        AS VARCHAR(24)) FROM 1 FOR 19) AS DATETIME
FROM unix_epoch

逻辑说明

  1. 先将基准时间1970-01-01 00:00:00标记为UTC时区(AT TIME ZONE 'UTC'),确保Epoch转换的起点是标准UTC时间。
  2. 使用DATEADD添加Epoch秒数,得到UTC时区的带时区时间戳。
  3. 通过AT TIME ZONE 'CET'将UTC时间转换为CET时区的本地时间。
  4. 最后按原逻辑格式化输出字符串。

执行上述SQL后,EPOCH值86400对应的输出会是1970-01-02 01:00:00,符合你的期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:12:45