日期格式错误

时间:2017-06-26 14:01:38

标签: sql oracle

Select 
  (*)
From 
  MISC
WHERE
  TO_DATE(TRANSACTION_TIME, YYYY-MM-DD HH24:MI:SS.FF6) Between 
  TO_DATE(:Variable1, 'YYYYMMDD') and TO_DATE(:Variable2, 'YYYYMMDD')

交易时间栏为CHAR(78)并返回2017-06-12-12.35.37.444978作为示例。我一直在努力解决这个问题,并且遇到了各种各样的错误。使用当前设置,我收到

  

执行查询时出错:ORA-01821:无法识别日期格式。

Variable1 = 20170612
变量2 = 20170615

2 个答案:

答案 0 :(得分:0)

该时间戳不是日期,因此您需要使用to_timestamp()而不是to_date()

答案 1 :(得分:0)

如果您只查看日期,那么可能更简单的版本可以使用:

WHERE TO_DATE(SUBSTR(TRANSACTION_TIME, 10), 'YYYY-MM-DD') Between 
          TO_DATE(:Variable1, 'YYYYMMDD') and TO_DATE(:Variable2, 'YYYYMMDD')

另外,为什么不将变量作为日期而不是字符串传递?这将绕过第二次转换。如果它们实际上是日期,则可能是转换问题所在。