1

假设我有一个名为的表projects,它的列为projectid, startdate and 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() 的方法到底是什么?

4

1 回答 1

1

GETDATE()是 TSQL 的一个函数。您要改用的是CURRENT_DATE. 另外,我使用COALESCE.

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

您可能还想使用FLOOR()as well 来优化结果以获得准确的日期。

于 2014-04-09T22:26:04.763 回答