如何在iSeries上的SQL400中获取UTC时间戳?

kra*_*nko 2 sql timestamp utc db2-400 ibm-midrange

我们的iSeries(又名AS400,又名i5,又称SystemI)在本地运行,但我们有一个应用程序,它使用UTC(用Java编写,通过JDBC连接到iSeries DB).

如何在该系统上通过SQL生成UTC时间戳?

kra*_*nko 6

DB2/400(它喜欢与其他DB2风格不同),有一个特殊的寄存器叫做CURRENT TIMEZONE.它包含一个数值,可以从时间戳或时间值中减去.

在示例查询中:

SELECT 
    CURRENT TIMESTAMP AS local, 
    CURRENT TIMEZONE AS offset, 
    CURRENT TIMESTAMP - CURRENT TIMEZONE AS utc
FROM SYSIBM.SYSDUMMY1
Run Code Online (Sandbox Code Playgroud)

给你这样的东西:

+----------------------------+--------+----------------------------+
| LOCAL                      | OFFSET | UTC                        |
+----------------------------+--------+----------------------------+
| 2014-05-27 14:09:19.127339 | 20.000 | 2014-05-27 12:09:19.127339 |
+----------------------------+--------+----------------------------+
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 此示例在欧洲中部夏季时间偏移+2小时.
  • SYSIBM.SYSDUMMY1 是IBM提供的一个特殊表,其唯一目的是只有一行只有一列.
  • 事情也喜欢NOW() - CURRENT TIMEZONECURRENT TIME - CURRENT TIMEZONE工作.
  • 参考IBM的iSeries信息中心