17.00 - 17.05 - 使用上の注意 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Published
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-170K-JPN
Language
日本語 (日本)

CURRENT_TIMEは、リクエストが開始された時点での現在の時間を返します。リクエストが終了するまでに、CURRENT_TIMEが複数回呼び出された場合でも、同じ時間が返されます。返される時間が、リクエストの継続中に変更されることはありません。

AT句なしでCURRENT_TIMEを指定した場合や、CURRENT_TIME AT LOCALを指定した場合、返される値は、DBS制御フラグTimeDateWZControlの設定に応じて、次に示すように変化します。

  • TimeDateWZControlフラグが有効な場合、CURRENT_TIMEは、セッションの時間とセッションのタイムゾーンを基にして構築された時間を返します。
  • TimeDateWZControlフラグが無効な場合、CURRENT_TIMEは、Vantageのローカルな時間値と、セッションのタイムゾーンを基にして構築された時間を返します。

夏時間(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ユーティリティを使用して設定されている場合は、ストアド プロシージャを再コンパイルする必要はありません。