SQL Serverでは、SWITCHOFFSET()
関数を使用して、 datetimeoffsetを返すことができます 保存されたタイムゾーンオフセットから指定された新しいタイムゾーンオフセットに変更された値。
以下は、この関数がどのように機能するかの例です。
構文
まず、構文は次のとおりです。
SWITCHOFFSET ( DATETIMEOFFSET, time_zone )
DATETIMEOFFSET
の場所 datetimeoffset(n)に解決できる式です 値、およびtime_zone
は、[+ |-] TZH:TZMの形式の文字列、またはタイムゾーンオフセットを表す符号付き整数(分単位)であり、夏時間に対応し、調整されていると見なされます。
結果はdatetimeoffsetとして返されます DATETIMEOFFSET
の分数精度で 引数。
例1
使用法の基本的な例は次のとおりです。
SELECT SWITCHOFFSET( '2112-01-01', '+08:00' ) AS Result;
結果:
Result ---------------------------------- 2112-01-01 08:00:00.0000000 +08:00
例2
この例では、負の値を使用しています:
SELECT SWITCHOFFSET( '2112-01-01', '-08:00' ) AS Result;
結果:
Result ---------------------------------- 2111-12-31 16:00:00.0000000 -08:00
例4
この例では、変数を宣言し、 datetimeoffsetを使用して変数に日付を割り当てます。 データ・タイプ。次に、SWITCHOFFSET()
を適用します その日付まで、元の日付と比較します。
DECLARE @date datetimeoffset = '2112-01-01 00:00:00.0000000 +04:00'; SELECT @date AS 'Original Date', SWITCHOFFSET( @date, '+08:00' ) AS '+08:00';
結果:
Original Date +08:00 ---------------------------------- ---------------------------------- 2112-01-01 00:00:00.0000000 +04:00 2112-01-01 04:00:00.0000000 +08:00
例5
ここでは、前の例と同じことを行いますが、SYSDATETIMEOFFSET()
を使用します。 現在の日付/時刻とオフセットを生成する関数。
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '+08:00' ) AS '+08:00';
結果:
Current Date +08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:05:36.9415309 +10:00 2018-06-05 15:05:36.9415309 +08:00
例6
この例は、負の値を追加することを除いて、前の例と同じです。
SELECT SYSDATETIMEOFFSET() AS 'Current Date', SWITCHOFFSET( SYSDATETIMEOFFSET(), '-08:00' ) AS '-08:00';
結果:
Current Date -08:00 ---------------------------------- ---------------------------------- 2018-06-05 17:12:07.1122856 +10:00 2018-06-04 23:12:07.1122856 -08:00
例7
文字列の代わりに整数としてタイムゾーンオフセットを指定することもできます:
SELECT SWITCHOFFSET( '2112-01-01', -180 ) AS Result;
結果:
Result ---------------------------------- 2111-12-31 21:00:00.0000000 -03:00