将日期 oracle 时间戳转换为 ISO-8601 日期数据类型 EN
最编程
2024-05-08 10:22:23
...
如果要将列中的所有日期转换为该时区CET的格式,并且确定偏移量始终为1,则可以执行以下操作:
SELECT TO_CHAR(FROM_TZ(TIMESTAMP '2000-03-28 08:00:00', '1:00'),'YYYY"-"MM"-"DD"T"HH24":"MI":"SSTZR')
FROM DUAL;
然而,问题是如何利用夏令时。当DST生效时,偏移量是否会发生变化?这里有很多考虑因素--这个question (归功于@Wernfried )有一个很好的概述。
例如,如果您的数据采用UTC时区,并且希望以CET显示,则可以按如下方式进行转换:
注意夏季有2小时的偏移量,冬季有1小时的偏移量。
WITH dates (season,dt) AS
(
SELECT 'summer', TO_DATE('01-AUG-2021','DD-MON-YYYY') FROM DUAL UNION ALL
SELECT 'winter', TO_DATE('01-JAN-2021','DD-MON-YYYY') FROM DUAL
)
SELECT dt,
season,
TO_CHAR(
FROM_TZ( CAST( dt AS TIMESTAMP ), 'UTC' )
AT TIME ZONE 'CET',
'YYYY-MM-DD HH24:MI:SS TZH:TZM TZR'
) AS cet_timezone
FROM dates;
01-AUG-2021 summer 2021-08-01 02:00:00 +02:00 CET
01-JAN-2021 winter 2021-01-01 01:00:00 +01:00 CET
上一篇: 实用的 Chrome 命令