GETUTCDATE()
関数の代わりに、getdate()
またはその逆を使用する必要があるのはなぜですか?
両方の目的は何ですか?例を教えてください。
GETUTCDATE()は、現在のUTC
時刻(協定世界時またはグリニッジ標準時)を表します。
nondeterministic
関数です。この列を参照するビューと式にはインデックスを付けることができません。現在のUTC時刻は、SQLServerが実行されているコンピューターのオペレーティングシステムの現在の現地時間とタイムゾーン設定から取得されます。
GETDATE()
との違いは、SQLServerマシンのGETUTCDATE()
タイムゾーン番号です。
理解を深めるには、次の例を参照してください。
DECLARE @local_time DATETIME;
DECLARE @gmt_time DATETIME;
SET @local_time = GETDATE();
SET @gmt_time = GETUTCDATE();
SELECT 'Server local time: '
+ CONVERT(VARCHAR(40),@local_time);
SELECT 'Server GMT time: '
+ CONVERT(VARCHAR(40),@gmt_time);
SELECT 'Server time zone: '
+ CONVERT(VARCHAR(40),
DATEDIFF(hour,@gmt_time,@local_time));
GO
出力:
Server local time: Jun 2 2007 10:06PM
Server GMT time: Jun 2 2007 4:21PM
Server time zone: 6
GETDATE()
GETUTCDATE()