2013-02-21 26 views
17

爲什麼要用GETUTCDATE()函數代替getdate()或者反之呢?GETUTCDATE函數

兩者的目的是什麼?請以示例幫助我。

回答

40

GETUTCDATE()表示當前時間UTC(通用協調時間或格林威治時間)

  • 這是一個nondeterministic功能,則引用該列視圖和表達式不能被索引。

當前UTC時間是從當前本地時間和運行SQL Server的計算機的操作系統中的時區設置得出的。

GETDATE()GETUTCDATE()之間的區別是時間SQL Server機器的區號碼。

爲了更好地理解看到的例子:

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 

OUTPUT:

Server local time: Jun 2 2007 10:06PM 
Server GMT time: Jun 2 2007 4:21PM 
Server time zone: 6 

GETDATE()

  • 它將返回日期與您所在地區的時間,或者我們可以說,它返回當前系統的日期和時間。
  • 如果遠程連接到SQL服務器,則顯示的時間戳將是遠程計算機的時間戳,而不是本地計算機的時間戳。
  • 這是一個不確定的函數。
  • 引用此列的視圖和表達式不能編入索引。

GETUTCDATE()

  • 它將返回的日期和時間GMT(格林威治標準時間)。
  • GETUTCDATE()可用於存儲獨立於時區的時間戳。
  • 當前UTC時間是從運行Microsoft SQL Server實例的計算機的操作系統中的當前本地時間和時區設置導出的。
  • GETUTCDATE是一個不確定的函數。
  • 引用此列的視圖和表達式不能編入索引。