Ste*_*ven 1 oracle to-char ora-01861
为什么以下查询的第7行出现以下错误?
Error: ORA-01861: literal does not match format string
Query:
01: SELECT hour
02: FROM (WITH all_hours AS
03: (SELECT TO_DATE ('2000-01-01', 'yyyy-mm-dd')
04: + NUMTODSINTERVAL (LEVEL - 1, 'hour') hour
05: FROM DUAL
06: CONNECT BY LEVEL <= 1000000)
07: SELECT TO_CHAR (h.hour, 'yyyy-mm-dd hh:mi am') hour
08: FROM all_hours h
09: GROUP BY h.hour)
10: WHERE hour BETWEEN TO_DATE ('2009-11-10 01:00 am', 'yyyy-mm-dd hh:mi am')
11: AND TO_DATE ('2009-11-10 01:00 am', 'yyyy-mm-dd hh:mi am')
Run Code Online (Sandbox Code Playgroud)
好吧,它不在第7行.问题是某个级别的"小时"转换为字符串(to_char),但在此之后与日期进行比较,并且隐式转换始终不起作用.更正的查询:
SELECT hour
FROM (WITH all_hours AS
(
SELECT TO_DATE ('2000-01-01', 'yyyy-mm-dd')
+ NUMTODSINTERVAL (LEVEL - 1, 'hour') hour
FROM DUAL
CONNECT BY LEVEL <= 1000000
)
SELECT TO_CHAR (h.hour, 'yyyy-mm-dd hh:mi am') hour, h.hour as hourdate
FROM all_hours h
GROUP BY h.hour)
WHERE hourdate BETWEEN TO_DATE ('2009-11-10 01:00 am', 'yyyy-mm-dd hh:mi am')
AND TO_DATE ('2009-11-10 01:00 am', 'yyyy-mm-dd hh:mi am')
Run Code Online (Sandbox Code Playgroud)