使用上の注意 - Teradata Database - Teradata Vantage NewSQL Engine - CURRENT_TIME関数、使用上の注意。

Teradata Vantage™ SQL関数、演算子、式および述部

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/xzf1512079057909.ditamap
dita:ditavalPath
ja-JP/xzf1512079057909.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

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