32

GETUTCDATE()関数の代わりに、getdate()またはその逆を使用する必要があるのはなぜですか?

両方の目的は何ですか?例を教えてください。

4

2 に答える 2

63

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()

  • 地域の時刻とともに日付を返します。つまり、現在のシステムの日付と時刻を返します。
  • SQL Serverにリモートで接続している場合、表示されるタイムスタンプは、ローカルマシンではなく、リモートマシンのタイムスタンプになります。
  • これは非決定論的な関数です。
  • この列を参照するビューと式にはインデックスを付けることができません。

GETUTCDATE()

  • 日付とGMT時刻(グリニッジ標準時)が返されます。
  • GETUTCDATE()を使用して、タイムゾーンに依存しないタイムスタンプを保存できます。
  • 現在のUTC時刻は、MicrosoftSQLServerのインスタンスが実行されているコンピューターのオペレーティングシステムの現在の現地時間とタイムゾーン設定から取得されます。
  • GETUTCDATEは非決定論的関数です。
  • この列を参照するビューと式にはインデックスを付けることができません。
于 2013-02-21T07:02:19.537 に答える