我有一个TIMESTAMP WITH TIME ZONE
类型的PL/SQL变量,我想给它的值加上一个月,但特别是当从夏令时改为标准时间时,时间应该保持不变。
下面的SELECT
(虽然不是PLS/SQL)显示了这个问题:
WITH
data
AS
( SELECT TO_TIMESTAMP_TZ('2023-04-17 05:00:00 EUROPE/BERLIN', 'yyyy-mm-dd hh24:mi:ss tzr') + NUMTOYMINTERVAL(LEVEL, 'MONTH') AS ts
FROM DUAL
CONNECT BY LEVEL <= 7)
SELECT to_char(ts, 'yyyy-mm-dd hh24:mi:ss tzr') AS ts
FROM data;
这个返回
2023-05-17 05:00:00 Europe/Berlin
2023-06-17 05:00:00 Europe/Berlin
2023-07-17 05:00:00 Europe/Berlin
2023-08-17 05:00:00 Europe/Berlin
2023-09-17 05:00:00 Europe/Berlin
2023-10-17 05:00:00 Europe/Berlin
2023-11-17 04:00:00 Europe/Berlin
如你所见,时间在11月变成了4点。
Oracle中是否有一个函数可以添加一个月而不更改时间?
1条答案
按热度按时间dm7nw8vv1#
你可以试试这个:
CAST(... AS TIMESTAMP)
删除时区(和DST)信息,然后添加月份,然后再次使用FROM_TZ
附加时区