2
Apache Derby中是否有可以將unix時代值(例如1453974057)轉換爲日期的函數?在Apache Derby中將unix時代的時間轉換爲日期
Apache Derby中是否有可以將unix時代值(例如1453974057)轉換爲日期的函數?在Apache Derby中將unix時代的時間轉換爲日期
如果你有秒自Unix紀元,使用:
select
{fn TIMESTAMPADD(SQL_TSI_SECOND, 1453974057, TIMESTAMP('1970-01-01-00.00.00.000000')) } as DT
from sysibm.SYSDUMMY1
只需用原始表替換 「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
只需用值替換1453974057235的3個實例。