1

我对 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 代码中的这个错误。

任何输入都会很棒。

谢谢 !!!

4

3 回答 3

1

您必须指定日期格式。

向 to_date 函数添加参数:

 to_date('01-JAN-12', 'DD-Mon-YY')

希望它有帮助。

问候。

于 2012-04-10T23:18:22.240 回答
0

如果您真的使用日期文字,则可以改用以下语法:

select * from orders where 
trunc(ordered_date)
between
date '2012-01-01'
and
date '2012-01-07'
于 2012-04-11T01:32:58.260 回答
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')

希望能帮助到你

于 2012-04-17T04:32:30.040 回答