ORA-30076试图找到日期之间的天数

时间:2013-09-16 12:29:04

标签: sql oracle

我试图找到两个日期之间的天数。 我尝试运行以下查询,最后出现 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;

我得到了正确的输出。

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

此:

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

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