如何将纪元转换为日期时间,同时考虑到时区?

问题描述 投票:0回答:1

Firebird 4 可以将纪元转换为日期时间并考虑时区吗?

示例:

时区为 CET (+01:00)。

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

输出

纪元 日期时间
86400 1970-01-02 00:00:00

所需输出

纪元 日期时间
86400 1970-01-02 01:00:00
datetime timezone firebird epoch firebird-4.0
1个回答
1
投票

你使用了太多的演员表,一切都变得更简单:

select dateadd(second, epoch, timestamp '1970-01-01 UTC') at time zone '+01:00' from unix_epoch;

使用时区名称:

select dateadd(second, epoch, timestamp '1970-01-01 UTC') at time zone 'CET' from unix_epoch;

输出:

AT
=========================================================
1970-01-02 01:00:00.0000 +01:00

AT
=========================================================
1970-01-02 01:00:00.0000 CET
© www.soinside.com 2019 - 2024. All rights reserved.