17.10 - AT LOCALおよびAT TIME ZONEタイムゾーン指定子 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLの日付/時刻関数と式

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1211-171K-JPN
Language
日本語 (日本)

date_time_primaryがTIMEまたはTIMESTAMP値と評価される場合、あるいはビルトイン関数CURRENT_DATEまたはDATEの場合に限り、date_time_primary内にAT LOCALまたはAT [TIME ZONE]句を含めることができます。

効果は、date_time_termを指定されたタイムゾーン変位に合わせて調整することです。

AT [TIME ZONE]句でタイムゾーン変位を指定するexpressionは(必要なときに可能であれば)、次に示す表で定義されたデータ型に応じて、タイムゾーン変位またはタイムゾーン文字列に暗黙的に変換されます。

expressionのデータ型 暗黙の変換
INTERVAL HOUR(n) TO MINUTE

nは2以外

CAST(expression AS INTERVAL HOUR(2) TO MINUTE)
  • INTERVAL HOUR
  • INTERVAL DAY
  • INTERVAL DAY TO HOUR
  • INTERVAL DAY TO MINUTE
  • INTERVAL DAY TO SECOND
  • INTERVAL HOUR
  • INTERVAL HOUR TO SECOND
  • INTERVAL MINUTE
  • INTERVAL MINUTE TO SECOND
  • INTERVAL SECOND
CAST(expression AS INTERVAL HOUR(2) TO MINUTE)
  • BYTEINT
  • SMALLINT
  • INTEGER
  • BIGINT
  • DECIMAL/NUMERIC(小数部が0の場合)
CAST(CAST(expression AS INTERVAL HOUR(2)) AS INTERVAL HOUR(2) TO MINUTE)
DECIMAL/NUMERIC (小数部が0以上の場合) CAST(CAST((expression)*60 AS INTERVAL MINUTE(4)) AS INTERVAL HOUR(2) TO MINUTE)
CHARACTER SET UNICODEを使用する文字 CAST(CAST(expression AS INTERVAL HOUR(2)) AS INTERVAL HOUR(2) TO MINUTE)

上記のCAST文でエラーが発生した場合、Vantageは次の文を試行します。

CAST(expression AS INTERVAL HOUR(2) TO MINUTE)

このCAST文でもエラーが発生した場合、Vantageは文字の値をタイムゾーン文字列として処理します。

CHARACTER SET UNICODEではない文字 TRANSLATE(expression USING source_repertoire_name_TO_Unicode)

source_repertoire_nameexpressionのサーバー文字セットです。コード変換された値は、上記のCHARACTER SET UNICODEを使用した文字値に対する処理が実行されます。

その他 エラーが返されます。
数値からINTERVAL型への変換には全般的な制限があります。INTERVAL型には日時フィールドが1つだけ必要になります。ただし、この制限は、AT句のexpressionを暗黙的に変換する際には問題になりません。その理由は、この変換が2つのCAST文を使用して実行されるためです。

INTERVAL HOUR(2) TO MINUTEへの変換結果が、INTERVAL -'12:59' HOUR TO MINUTEと、INTERVAL '14:00' HOUR TO MINUTEの間に収まらない値になると、エラーが返されます。

AT [TIME ZONE] time_zone_string句では、2種類のタイムゾーン文字列を指定できます。
  • 独自の夏時間(DST)と、協定世界時(UTC時間)からの標準タイムゾーン変位に対応しない、タイムゾーン文字列。
  • 独自のDSTと、UTC時間からの標準タイムゾーン変位に対応する、タイムゾーン文字列。

サポートされているタイムゾーン文字列を次に示します。

独自のDSTと標準タイムゾーン変位に対応しない文字列
  • 'GMT'
  • 'GMT+1'
  • 'GMT+10'
  • 'GMT+11'
  • 'GMT+11:30'
  • 'GMT+12'
  • 'GMT+13'
  • 'GMT+14'
  • 'GMT+2'
  • 'GMT+3'
  • 'GMT+3:30'
  • 'GMT+4'
  • 'GMT+4:30'
  • 'GMT+5'
  • 'GMT+5:30'
  • 'GMT+5:45'
  • 'GMT+6'
  • 'GMT+6:30'
  • 'GMT+7'
  • 'GMT+8'
  • 'GMT+8:45'
  • 'GMT+9'
  • 'GMT+9:30'
  • 'GMT-1'
  • 'GMT-10'
  • 'GMT-11'
  • 'GMT-2'
  • 'GMT-3'
  • 'GMT-4'
  • 'GMT-5'
  • 'GMT-6'
  • 'GMT-6:30'
  • 'GMT-7'
  • 'GMT-8'
独自のDSTと標準タイムゾーン変位に対応する文字列
  • 'Africa Egypt'
  • 'Africa Morocco'
  • 'Africa Namibia'
  • 'America Alaska'
  • 'America Aleutian'
  • 'America Argentina'
  • 'America Atlantic'
  • 'America Brazil'
  • 'America Central'
  • 'America Chile'
  • 'America Cuba'
  • 'America Eastern'
  • 'America Mountain'
  • 'America Newfoundland'
  • 'America Pacific'
  • 'America Paraguay'
  • 'America Uruguay'
  • 'Asia Gaza'
  • 'Asia Iran'
  • 'Asia Iraq'
  • 'Asia Irkutsk'
  • 'Asia Israel'
  • 'Asia Jordan'
  • 'Asia Kamchatka'
  • 'Asia Krasnoyarsk'
  • 'Asia Lebanon'
  • 'Asia Magadan'
  • 'Asia Omsk'
  • 'Asia Syria'
  • 'Asia Vladivostok'
  • 'Asia West Bank'
  • 'Asia Yakutsk'
  • 'Asia Yekaterinburg'
  • 'Australia Central'
  • 'Australia Eastern'
  • 'Australia Western'
  • 'Europe Central'
  • 'Europe Eastern'
  • 'Europe Kaliningrad'
  • 'Europe Moscow'
  • 'Europe Samara'
  • 'Europe Western'
  • 'Indian Mauritius'
  • 'Mexico Central'
  • 'Mexico Northwest'
  • 'Mexico Pacific'
  • 'Pacific New Zealand'
  • 'Pacific Samoa'

Vantageは、このタイムゾーン文字列を解決して、セッションまたは要求された問合わせに対するタイムゾーン変位を計算します。

タイムゾーンの指定に、独自のDSTと標準タイムゾーン変位に対応するタイムゾーン文字列を使用した場合にのみ、Vantageは夏時間の開始と終了を考慮に入れて自動的にタイムゾーン変位を調整します。GMT書式の文字列は、標準時にのみに対応し、独自の夏時間が存在しないタイムゾーン文字列を表わします。例えば、インドではタイムゾーン文字列'GMT+5:30'が使用されているでしょう。これは、年間を通して、5時間30分の変位の間隔を適用するために使用できます。

Vantageは、システムUDF(ユーザー定義関数)のGetTimeZoneDisplacementに格納されたルールとタイムゾーン変位の情報に基づいて、タイムゾーン文字列を解決します。

Teradataが提供するタイムゾーン文字列では要件を満たせないときには、新しいタイムゾーン文字列を追加するか、既存のタイムゾーン文字列に変更を加えてください。そのためには、GetTimeZoneDisplacement UDFに変更を加えるか、新しいルールを追加することになります。

次に示す状況でも、AT句を使用してタイムゾーンを明示的に指定できます。
  • 以下のビルトイン関数を使用する場合。
    • “CURRENT_DATE”
    • “CURRENT_TIME”
    • “CURRENT_TIMESTAMP”
    • “DATE”
    • “TIME”
      これらのビルトイン関数をAT LOCAL句に指定すると、DBS制御フラグTimeDateWZControlの設定に応じて返される値が変化します。
  • CAST関数またはTeradata変換構文を使用して、日時データ型を変換する場合。ソース タイムゾーン、特定のタイムゾーン変位やタイムゾーン文字列、または現在のセッションのタイムゾーンとして、CASTや変換に使用するタイムゾーンを指定できます。
  • フィールドの抽出前に、ソースの式のタイムゾーンを指定するために、EXTRACT関数を使用する場合。