考虑到数据库服务器的时区,DBINFO 函数的 'utc_to_datetime' 选项将 UTC 秒数返回到服务器会生成的 DATETIME 值,如果 UNIX™ time( ) 系统调用返回了秒参数的值的话。
'utc_to_datetime' 选项将它的最后的参数强制转型为 DATETIME 值,该参数必须是表示“全球标准时间”(UTC)的数值表达式。如果这求值为带有小数部分的数值,则忽略任何小数的秒。
在下列第一个示例中,最后一个参数是表示为字面整数的 UTC 值。在第二个示例中,最后一个参数是指定存储 UTC 值的整数列的列表达式。在两个示例中,DBINFO 都将 UTC 值强制转型为数据库服务器的时区中的 DATETIME 值:
DBINFO ('utc_to_datetime', 1299912999 ) DBINFO ('utc_to_datetime', timesheet.utc_checkin )
如果最后一个参数的值是负的,则该函数从较早的 UNIX epoch 返回 DATETIME 值,如下例中所示:
SELECT DBINFO("utc_to_datetime", -2134567890.91234) FROM 'sysmaster:"gbasedbt".sysdual';
此查询返回 DATETIME 值 1902-05-12 08:28:30。
这些示例时间都假设服务器在特定的时区中。下列查询返回四个 DATETIME 值:
SELECT DBINFO('utc_to_datetime', -32767) AS min_smallint, DBINFO('utc_to_datetime', +32767) AS max_smallint, DBINFO('utc_to_datetime', 1299912999), DBINFO("utc_to_datetime", -2134567890.91234) FROM 'sysmaster:"gbasedbt".sysdual';
1969-12-31 06:53:53 1970-01-01 01:06:07 2011-03-11 22:56:39 1902-05-12 01:28:30 # Server running in TZ=US/Pacific
1969-12-31 14:53:53 1970-01-01 09:06:07 2011-03-12 06:56:39 1902-05-12 08:28:30 # Server running in TZ=UTC0请注意,第三个 DBINFO 结果中的 DAY 组件对于 United States Pacific 时区与对于 UTC0 时区是不同的,因为这那两个时区之间有 8 小时的偏移量。
对于时间中的点,数据库服务器时区可类似地影响从其他表达式的返回值,诸如 CURRENT、SYSDATE 和 TODAY,其 DATETIME YEAR TO SECOND 或 DATE 表示依赖于服务器的时区。