CHANGETIMEZONE ER 機能

CHANGETIMEZONE 関数は、あるタイムゾーンの指定された日付/時刻の値を、別のタイムゾーンの日付/時刻の値に変換した協定世界時 (グリニッジ標準時 [GMT]) の 日時 値を返します。

Syntax

CHANGETIMEZONE (datetime, base time zone, target time zone)

Arguments

datetime: 日時

協定世界時のタイムゾーンで、変換する日付・時刻の値を表します。

base time zone: 文字列

指定された日付/時刻の値が変換前にシフトされるタイムゾーンの名前です。

target time zone: 文字列

変換された日付/時刻の値が、変換時にシフトするタイムゾーンの名前です。

戻り値

DateTime

協定世界時のタイムゾーンでの結果の日付/時刻の値です。

使用に関する注記

送信元と送信先のタイムゾーンを指定するには、インターネット番号割当機関 (IANA)提供しているタイムゾーン名や、Microsoft Windows がサポートしているタイムゾーン名を使用できます。

実行時に、指定された名前が IANA リストや Windows レジストリに見つからない場合は、「タイムゾーン <time zone name> が存在しません」という例外がスローされます。

サマータイムが実施されているタイムゾーンでは、協定世界時のサマータイム オフセットを考慮して変換されます。 変換時には、このオフセットに関する最新の情報が使用されます。

例 1

この例では、Windows のタイムゾーン名を使用しています。

算出されたフィールドタイプの DSX データソースを構成します。 次の式が含まれています。

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "E. Europe Standard Time", "Hawaiian Standard Time"), "O")
)

計算されたフィールドタイプの DSY データソースの式を DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN") と設定すると、DSX データソースは 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00 というテキストを返します。 このテキストは、6 月 1 日に提供された 2 つのタイムゾーンの時差が 24 時間以上であることを示しています。 したがって、基準となるタイムゾーンが対象となるタイムゾーンよりも先行しているため、変換後の日時の値は指定された日時の値よりも 1 日前の値になります。

計算されたフィールドタイプの DSY データソースの式を DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN") と設定すると、DSX データソースは 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00 というテキストを返します。 このテキストは、12 月 1 日に提供された 2 つのタイムゾーンの時差が 24 時間以下であることを示しています。 したがって、変換された日付/時刻の値は、指定された日付/時刻の値と等しくなります。

Note

同じ式は、同じタイムゾーンのペアについて、指定された日付/時刻の値と変換された日付/時刻の値の間で異なる差異を返します。これは、ある日付/時刻において、指定されたタイムゾーンで異なる協定世界時のサマータイムオフセットが実施されるためです。

例 2

この例では、IANA のタイムゾーン名を使用しています。

算出されたフィールドタイプの DSX データソースを構成します。 次の式が含まれています。

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "Europe/Athens", "US/Hawaii"), "O")
)

計算されたフィールドタイプの DSY データソースの式を DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN") と設定すると、DSX データソースは 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00 というテキストを返します。 このテキストは、6 月 1 日に提供された 2 つのタイムゾーンの時差が 24 時間以上であることを示しています。 したがって、基準となるタイムゾーンが対象となるタイムゾーンよりも先行しているため、変換後の日時の値は指定された日時の値よりも 1 日前の値になります。

計算されたフィールドタイプの DSY データソースの式を DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN") と設定すると、DSX データソースは 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00 というテキストを返します。 このテキストは、12 月 1 日に提供された 2 つのタイムゾーンの時差が 24 時間以下であることを示しています。 したがって、変換された日付/時刻の値は、指定された日付/時刻の値と等しくなります。

例 3

算出されたフィールドタイプの DSX データソースを構成します。 次の式が含まれています。

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "US/Hawaii", "Europe/Athens"), "O")
)

計算されたフィールドタイプの DSY データソースの式を DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN") と設定すると、DSX データソースは 2021-06-01T12:55:00.0000000+00:00 -> 2021-06-02T01:55:00.0000000+00:00' というテキストを返します。 このテキストは、6 月 1 日に提供された 2 つのタイムゾーンの時差が 24 時間以上であることを示しています。 したがって、変換後の日時の値は、対象となるタイムゾーンが基準となるタイムゾーンよりも先行しているため、指定された日時の値よりも 1 日遅くなります。

例 4

タイムゾーン情報が一切含まれていないテキストとして外部ソースから日付や時刻スタンプを受け取ることもあります。 ただし、ソースが動作するタイムゾーンを知っているかもしれません。 例えば、スペインで運行しているサービスから日付と時刻スタンプ 01/12/2025 12:55:00 を受け取った場合。 この日付と時刻の値を正しくデータベースに保存するには、以下の変換手順を踏み入れてください:

  • 算出されたフィールドタイプの DSY データソースを設定して、日付/タイムスタンプをテキストから協定世界時の日付/時刻の値に変換します。

    DATETIMEVALUE ("01/12/2025 12:55:00", "dd/MM/yyyy HH:mm:ss", "ES")

  • 算出されたフィールドタイプの DSX データソースで、変換された日付/時刻の値を、外部ソースのタイムゾーンの日付/時刻の値として協定世界時にシフトするように構成します。

    CHANGETIMEZONE(DSY, "Romance Standard Time", "GMT Standard Time")

Note

CHANGETIMEZONE の機能を使用して日付/時刻の変換を行う場合、日付/時刻の値は、協定世界時のタイムゾーンの値としてデータベースに保存されることに注意してください。 この値はアプリケーションのページで表示する前に、変換されます。 この変換では、現在サインインしているアプリケーション ユーザーの優先ゾーンとして設定されているタイムゾーンが考慮されます。

その他のリソース

日付と時刻の関数