CURRENT_TIMESTAMPは、リクエストが開始された時点での現在のタイムスタンプを返します。リクエストが終了するまでに、CURRENT_TIMESTAMPが複数回呼び出された場合でも、同じタイムスタンプが返されます。返されるタイムスタンプが、リクエストの継続中に変更されることはありません。
AT句なしでCURRENT_TIMESTAMPを指定した場合や、CURRENT_TIMESTAMP AT LOCALを指定した場合、返される値は、DBS制御フラグTimeDateWZControlの設定に応じて、次に示すように変化します。
- TimeDateWZControlフラグが有効な場合、CURRENT_TIMESTAMPは、セッションの時間とセッションのタイムゾーンを基にして構築されたタイムスタンプを返します。
- TimeDateWZControlフラグが無効な場合、CURRENT_TIMESTAMPは、Vantageのローカルな時間値と、セッションのタイムゾーンを基にして構築されたタイムスタンプを返します。
CURRENT_TIMESTAMPは、夏時間(DST)の開始と終了を考慮に入れて調整された値を返します。ただし、この調整が実行されるのは、次の場合に限られます。
- CURRENT_TIMESTAMPがAT [TIME ZONE] time_zone_stringとともに指定されていて、time_zone_stringが、個別のDSTと標準タイムゾーン変位に対応している。
- CURRENT_TIMESTAMPがAT LOCALとともに指定されているか、AT句なしで指定されていて、セッションのタイムゾーンが、個別のDSTと標準のタイムゾーン変位に対応しているタイムゾーン文字列で定義されている。
ストアド プロシージャでCURRENT_TIMESTAMPを使用する場合、DBS制御フィールドのSystem TimeZone HourまたはSystem TimeZone Minuteを変更するときには、常にそのプロシージャを再コンパイルする必要があります。タイムゾーン文字列がtdlocaledefユーティリティを使用して設定されている場合は、ストアド プロシージャを再コンパイルする必要はありません。