1

我试图找到两个日期之间的天数。我尝试运行以下查询并最终出现ORA-30076错误。

查询是,

select extract(day from (sysdate - to_date('2009-10-01', 'yyyy-mm-dd'))) 
 from dual

错误是,

Error at Command Line:1 Column:34
Error report:
SQL Error: ORA-30076: invalid extract field for extract source
30076. 00000 -  "invalid extract field for extract source"
*Cause:    The extract source does not contain the specified extract field.

但是当我尝试跑步时

Select extract(day from sysdate) from dual;

我得到了正确的输出。

如果有人知道我收到上述错误的原因,请提供帮助。

4

3 回答 3

8

从另一个日期中减去一个日期不会返回日期,它会返回一个代表天数差异的数字,因此您不能使用提取。

于 2013-09-16T12:35:50.623 回答
3

sysdate - to_date('2009-10-01', 'yyyy-mm-dd')将给出两个日期之间的天数差异 - 无需使用extract函数。此外,在这种情况下,函数的使用是不正确的,extract因为它会期望在from子句之后表达日期或间隔数据类型,并且sysdate - to_date('2009-10-01', 'yyyy-mm-dd')减法的结果是数字数据类型 - 这是您面临的错误的原因。

于 2013-09-16T12:37:52.493 回答
2

这:

 sysdate - to_date('2009-10-01', 'yyyy-mm-dd')

返回一个数字,而不是日期。您只能从日期中提取天数。

于 2013-09-16T12:36:14.393 回答