假设我有一个名为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()的方法是什么?
答案 0 :(得分:1)
GETDATE()
是TSQL的一个函数。您想要使用的是CURRENT_DATE
。此外,我使用COALESCE
稍微改进了您的查询。
select projectid,
COALESCE(enddate,CURRENT_DATE) - startdate
as "duration" from projects;
您可能希望使用FLOOR()
优化结果以获得确切的日期。