Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle where子句中的春季时间更改(DST)期间的异常_Oracle_Dst_Timestamp With Timezone - Fatal编程技术网

Oracle where子句中的春季时间更改(DST)期间的异常

Oracle where子句中的春季时间更改(DST)期间的异常,oracle,dst,timestamp-with-timezone,Oracle,Dst,Timestamp With Timezone,我有一个表,其中有一列数据类型为“带有本地时区的时间戳(6)” 问题: 对于下面的查询,我得到一个异常,它表示时区不存在 select * from table where update_time <= CURRENT_TIMESTAMP-3/24; select*from table where update\u time我无法在我的环境中复制,但我认为错误是由于将日期数据类型转换为带有本地时区的无效时间戳造成的 例如,在欧洲/巴黎时区,时间戳2014-03-30 02:30:00无效

我有一个表,其中有一列数据类型为“带有本地时区的时间戳(6)”

问题: 对于下面的查询,我得到一个异常,它表示时区不存在

select * from table where update_time <= CURRENT_TIMESTAMP-3/24;

select*from table where update\u time我无法在我的环境中复制,但我认为错误是由于将
日期
数据类型转换为带有本地时区的无效
时间戳造成的

例如,在
欧洲/巴黎
时区,时间戳
2014-03-30 02:30:00
无效:

SQL> SELECT to_timestamp_tz('2014-03-30 02:30 Europe/Paris',
  2                         'yyyy-mm-dd hh24:mi TZR')
  3    FROM dual;
SELECT to_timestamp_tz('2014-03-30 02:30 Europe/Paris',
                       *
ERROR at line 1:
ORA-01878: specified field not found in datetime or interval
此时间和日期不存在,因为时钟在
02:00
03:00
之间转发


由于您的
Hi的右侧,错误将与您给出的建议一起出现。我尝试了类似这样的方法,从当前时间戳>到时间戳('03-12-2014 02:30','MM-DD-YYYY hh:mi')-间隔为'3'天;我得到以下错误ORA-01878:在日期时间或间隔01878中找不到指定字段。00000-“在datetime或interval中未找到指定字段”*原因:在datetime或interval中未找到指定字段*操作:确保指定的字段在日期时间或间隔内。停止将
时间戳
时间戳与时区
进行比较。使用
来标记时间戳
而不是
来标记时间戳
,就像我在回答中所做的那样。你仍然有同样的问题吗?很抱歉反应太晚。它与to_timestamp_tz一起工作
select * from table where update_time <= CURRENT_TIMESTAMP - INTERVAL '3' HOUR;