问题描述
我可以这样做以获取UTC
select CURRENT TIMESTAMP - CURRENT TIMEZONE AS utc
FROM SYSIBM.SYSDUMMY1;
人们会想到类似的东西
select GetEpoch(CURRENT TIMESTAMP - CURRENT TIMEZONE) AS utc
FROM SYSIBM.SYSDUMMY1;
GetEpoch的逻辑是什么?
解决方法
如果您的Db2数据库位于Linux / Unix / Windows或i系列上,并且当前受IBM支持,则可以使用EXTRACT函数,该函数接受EPOCH参数(除其他外)。
对于EPOCH,提取返回自提供的日期/时间戳表达式自1970-01-01 00:00:00.00开始的秒数。
示例values extract(epoch from current timestamp)
或select extract(epoch from current timestamp) from sysibm.sysdummy1
Db2-LUW文档here。
Db2-for-i文档here。
尽管DTRACE for Z / OS上提供了EXTRACT函数,但除非文档中没有说明here,否则它似乎不接受EPOCH参数。
,以下查询在两行中返回相同的结果:
VALUES
extract(epoch from current timestamp),(days(current timestamp) - days(timestamp('1970-01-01'))) * 86400 + midnight_seconds(current timestamp)