我对Oracle
有点疑惑我的SQL下面
select * from orders where
trunc(ordered_date)
between
to_date('01-JAN-12')
and
to_date('07-JAN-12')
Ordered_date是DATE数据类型
是否给出了以下错误。
Error starting at line 1 in command:
select * from orders
where
trunc(ordered_date)
between
to_date('01-JAN-12')
and
to_date('07-JAN-12')
Error report:
SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
01841. 00000 - "(full) year must be between -4713 and +9999, and not be 0"
*Cause: Illegal year entered
*Action: Input year in the specified range
我很困惑mu代码中导致此错误的原因。
任何输入都会很棒。
谢谢!!!
答案 0 :(得分:1)
您必须指定日期格式。
向to_date函数添加参数:
to_date('01-JAN-12', 'DD-Mon-YY')
希望它有所帮助。
问候。
答案 1 :(得分:0)
如果您真的使用日期文字,则可以使用以下语法:
select * from orders where
trunc(ordered_date)
between
date '2012-01-01'
and
date '2012-01-07'
答案 2 :(得分:0)
也许您应该将日期(即DB日期和2个输入日期)转换为相同的格式,如下所示
SELECT *
FROM ORDERS O
WHERE TO_DATE(TO_CHAR(O.ORDERED_DATE, 'DD-MON-YY'), 'DD-MON-YY') BETWEEN
TO_DATE('01-JAN-12', 'DD-MON-YY') AND
TO_DATE('07-JAN-12', 'DD-MON-YY')
希望有所帮助