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()同様に を使用して結果を絞り込み、正確な日数を取得することもできます。

于 2014-04-09T22:26:04.763 に答える