如何在Oracle中使用GETDATE()来查找当前日期和某个指定日期之间的天数?

时间:2014-04-09 22:23:22

标签: oracle-sqldeveloper getdate sql-date-functions sqldatetime

假设我有一个名为projects的表,其列为projectid, startdate and enddate。已指定每个项目的startdate,并且仅为已完成的项目指定enddate。对于正在进行的项目,结束日期为null。 我们必须执行此任务:

查找每个项目的项目ID和持续时间。如果项目尚未完成,请报告截至目前的执行时间。 [提示:Getdate()给出当前日期]

为此,我写了这段代码,

select projectid,
CASE
when enddate is null then GETDATE() - startdate
else enddate - startdate
END
as "duration" from projects;

但是这给了我

ORA-00904: "GETDATE": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 113 Column: 27

第113行,第27列是GETDATE()的位置。

那么在这里使用getdate()的方法是什么?

1 个答案:

答案 0 :(得分:1)

GETDATE()是TSQL的一个函数。您想要使用的是CURRENT_DATE。此外,我使用COALESCE稍微改进了您的查询。

select projectid,
COALESCE(enddate,CURRENT_DATE) - startdate 
as "duration" from projects;

您可能希望使用FLOOR()优化结果以获得确切的日期。