Db2:如何将 Unix/纪元时间转换为时间戳?

问题描述

我有一个 BIGINT 值,它代表一个 UNIX 时间戳(纪元)。如何将其转换为内置的 TIMESTAMP 类型?

例如,我想把 1611140400 变成相关的日期和时间。 TIMESTAMP_FORMAT 不起作用。

解决方法

您可以在 Db2 和 Db2 on Cloud 中使用 datetime arithmetics。对于 Db2 on Cloud(以 UTC 运行):

VALUES (TIMESTAMP('1970-01-01') + 1611140400 seconds)

纪元是自 1970 年 1 月 1 日 GMT / UTC 以来的秒数。因此,将您的数字作为秒数添加到该日期将给出:

2021-01-20 11:00:00.0

如果您在不同的时区运行,则需要注意它,例如:

VALUES (TIMESTAMP(‘1970-01-01-00.00.00.000000’) + 1611140400 seconds + current timezone)