Fid*_*del 4 timestamp derby epoch unix-timestamp
Apache Derby 中是否有一个函数可以将 unix 纪元时间值(例如 1453974057 )转换为日期?
如果您有自 Unix 纪元以来的秒数,请使用:
select
{fn TIMESTAMPADD(SQL_TSI_SECOND, 1453974057, TIMESTAMP('1970-01-01-00.00.00.000000')) } as DT
from sysibm.SYSDUMMY1
Run Code Online (Sandbox Code Playgroud)
只需将“sysibm.SYSDUMMY1”替换为您的原始表,并将 1453974057 替换为您的值。
在处理毫秒时,它会变得有点复杂,因为您不能直接使用 TIMESTAMPADD(您将获得 SQL 状态 22003:结果值超出数据类型 INTEGER 的范围。)
如果您有自 Unix 纪元以来的毫秒数,请使用:
select
--the following block converts milliseconds since linux epoch to a timestamp
{ fn TIMESTAMPADD(
SQL_TSI_FRAC_SECOND,
(
--add the millisecond component
1453974057235 - { fn TIMESTAMPDIFF(
SQL_TSI_SECOND,
TIMESTAMP('1970-01-01-00.00.00.000000'),
{ fn TIMESTAMPADD(SQL_TSI_SECOND, 1453974057235/1000, TIMESTAMP('1970-01-01-00.00.00.000000')) }
)} * 1000
) * 1000000,
{ fn TIMESTAMPADD(SQL_TSI_SECOND, 1453974057235/1000, TIMESTAMP('1970-01-01-00.00.00.000000')) }
)} as FINAL_DT
from SYSIBM.SYSDUMMY1
Run Code Online (Sandbox Code Playgroud)
只需用您的值替换 1453974057235 的 3 个实例。