将db2 datestamp转换为Unix时间戳

时间:2012-05-08 03:54:26

标签: db2 unix-timestamp

如何将2012-04-12 00:00:00转换为DB2中的unix时间戳。 sql s中是否有任何inbuild函数

谢谢。

2 个答案:

答案 0 :(得分:4)

使用DAYSMIDNIGHT_SECONDSTIMESTAMPDIFF精确得多:

SELECT
86400*(DAYS(CURRENT TIMESTAMP - CURRENT TIMEZONE)-DAYS('1970-01-01'))
+ MIDNIGHT_SECONDS(CURRENT TIMESTAMP - CURRENT TIMEZONE)
"UNIX_TIMESTAMP"
FROM SYSIBM.SYSDUMMY1

答案 1 :(得分:3)

Unix timestamp我假设你是指自1970-01-01 00:00:00 UTC以来的秒数(或其他)。

DB2中没有内置的功能(从V6R1开始) 您还遇到了以下问题:

  • DB2中的所有时间戳都是“本地时间” - 它们不包含时区信息,所有CURRENT_TIMESTAMP次写入都基于请求系统认为的时间,不是主持人。
  • 夏令时经常变化。您需要增加管理费用以进行转换。
  • TIMESTAMPDIFF函数返回估算值不是一个确切的值。你可能可以存活多年/几个月的持续时间,而不是足够的差异,但是几天不太可能削减它。
  • 时间戳算法不精确(除其他外,假设月份总是30天......)

您最好的选择是开始使用DAYS(返回自0001-01-01以来的天数)。请记住,您最好在UTC中执行所有操作,因为它会将DST考虑在内。