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
答案 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')
另外,为什么不将变量作为日期而不是字符串传递?这将绕过第二次转换。如果它们实际上是日期,则可能是转换问题所在。