您如何将UTC日期转换为DB2中的纪元?

问题描述

我可以这样做以获取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)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...