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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/xmd1556127764262.ditamap
dita:ditavalPath
ja-JP/xmd1556127764262.ditaval
dita:id
B035-1211
Product Category
Software
Teradata Vantage

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文でエラーが発生した場合、Teradata Databaseは次の文を試行します。

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

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

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'

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

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

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

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

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