CURRENT_TIMEは、リクエストが開始された時点での現在の時間を返します。リクエストが終了するまでに、CURRENT_TIMEが複数回呼び出された場合でも、同じ時間が返されます。返される時間が、リクエストの継続中に変更されることはありません。
AT句なしでCURRENT_TIMEを指定した場合や、CURRENT_TIME AT LOCALを指定した場合、返される値は、DBS制御フラグTimeDateWZControlの設定に応じて、次に示すように変化します。
- TimeDateWZControlフラグが有効な場合、CURRENT_TIMEは、セッションの時間とセッションのタイムゾーンを基にして構築された時間を返します。
- TimeDateWZControlフラグが無効な場合、CURRENT_TIMEは、Teradata Databaseサーバーのローカルな時間値と、セッションのタイムゾーンを基にして構築された時間を返します。
夏時間(DST)でCURRENT_TIMEを使用する場合、次のメッセージが発生します。
- TimeDateWZControlフラグが有効で、個別の夏時間と標準タイム ゾーン変位に対応するタイム ゾーン文字列によってセッションのタイム ゾーンが定義される場合、CURRENT_TIME AT LOCALは夏時間のタイム ゾーンではなく標準タイム ゾーンに対応するTIMEの値を付与します。
- 夏時間の期間中は、CURRENT_TIME AT LOCALは標準タイム ゾーンに対応し、CURRENT_TIMEは夏時間タイム ゾーンに対応します。標準タイム ゾーンの期間中は、CURRENT_TIMEとCURRENT_TIME AT LOCALの両方が標準タイム ゾーンに対応します。
例えば、DST期間中は以下のようになります:
BTEQ -- Enter your SQL request or BTEQ command: .os date Sat Sep 5 14:00:23 PDT 2015 BTEQ -- Enter your SQL request or BTEQ command: .os date -u Sat Sep 5 21:00:26 UTC 2015 BTEQ -- Enter your SQL request or BTEQ command: select current_time, current_time at local; *** Query completed. One row found. 2 columns returned. *** Total elapsed time was 1 second. Current Time(0) Current Time(0) AT LOCAL --------------- ------------------------ 14:00:30-07:00 13:00:30-08:00
期間中は以下のようになります:
BTEQ -- Enter your SQL request or BTEQ command: .os date Fri Nov 6 04:18:04 PST 2015 BTEQ -- Enter your SQL request or BTEQ command: .os date -u Fri Nov 6 12:18:07 UTC 2015 BTEQ -- Enter your SQL request or BTEQ command: select current_time, current_time at local; *** Query completed. One row found. 2 columns returned. *** Total elapsed time was 1 second. Current Time(0) Current Time(0) AT LOCAL --------------- ------------------------ 04:18:20-08:00 04:18:20-08:00
ストアド プロシージャでCURRENT_TIMEを使用する場合、DBS制御フィールドのSystem TimeZone HourまたはSystem TimeZone Minuteを変更するときには、常にそのプロシージャを再コンパイルする必要があります。タイムゾーン文字列がtdlocaledefユーティリティを使用して設定されている場合は、ストアド プロシージャを再コンパイルする必要はありません。