时间戳和日期之间的比较给出错误ora-01852

时间:2014-06-30 10:13:12

标签: sql oracle date timestamp

有一个表具有varchar2类型的日期列。此字段中的值格式为:2013-12-19T12:12:23.345000000Z 我必须找到两个连续日期之间的区别。但由于日期是字符串格式,我首先将其转换为时间戳。我使用以下查询。

 select dccontextid,
        to_timestamp(substr(cdate,1,10)||' '||substr(cdate,12,12),'yyyy-mm-dd hh24:mi:ss.ff')
   from cam6eng.ttestcolorproc_wd
  where to_timestamp(substr(cdate,1,10)||' '||substr(cdate,12,12),'yyyy-mm-dd hh24:mi:ss.ff') between :StartDate and :EndDate

如果在不包含where子句的情况下运行上述查询,则会显示正确的时间戳值。但是当我把where子句放入时,它会给出错误ORA-01852秒必须在0到59之间。 (这是因为某些记录的第二个= 59且分数=某个非零值)

这个问题的解决方法是什么?

1 个答案:

答案 0 :(得分:0)

时间戳转换似乎没问题:

select to_timestamp(substr('2013-12-19T12:12:23.345000000Z', 1, 10) || ' ' ||
                    substr('2013-12-19T12:12:23.345000000Z', 12, 12)
                   ,'yyyy-mm-dd hh24:mi:ss.ff')
  from dual

问题可能在于您正在比较时间戳的值。 :Startdate和:Enddate。你为这些人投入了什么样的价值观?