2016-12-06 66 views
-1

我的系統昨天返回所有數據,但它應該做的是它應該從今天返回所有數據,我的代碼在本地數據庫中工作,但是當我上傳它時在網絡上,並開始使用在線數據庫出現問題GETDATE()與我的系統時間不匹配

這裏是我的SQL代碼:

CREATE PROCEDURE [dbo].[DisplayReservationToday] 
AS 
    SELECT DISTINCT 
     r1.RESERVATION_ID, r4.LAST_NAME + ', ' + r4.FIRST_NAME AS NAME, 
     r2.ROOM_ID, r3.ROOM_TYPE, r2.NO_GUEST, 
     CONVERT(DATE, r2.ARRIVAL_DATE) AS ADate, 
     CONVERT(DATE, r2.DEPARTURE_DATE) AS DDate, r2.STATUS 
    FROM 
     TBL_Transaction AS r1, TBL_SubTransaction AS r2, 
     TBL_Room AS r3, TBL_Client AS r4 
    WHERE 
     r1.RESERVATION_ID = r2.RESERVATION_ID 
     AND r2.ROOM_ID = r3.ROOM_ID 
     AND r1.USERNAME = r4.USERNAME 
     AND UPPER(r2.STATUS) != UPPER('Cancelled') 
     AND CONVERT(DATE, r2.ARRIVAL_DATE) = CONVERT(DATE, GETDATE()) 
+2

可能是您的網絡服務器是不同的時區域 –

+0

所以我的代碼可以嗎?我唯一應該做的就是聯繫我的在線服務器? – Newbie10

+1

就像@Prdp說的那樣,你的數據庫服務器所在的時區與你自己的位置有所不同。一種中和時區差異的方法是使用UTC作爲存儲和檢索數據的標準,並使用'GETUTCDATE()'而不是'GETDATE()'。你總是可以重置數據庫服務器上的時區以及備用解決方案 – ughai

回答

4

發生這種情況可能是因爲在線數據庫服務器是在不同的時區比你本地機器。

GETDATE()返回數據庫服務器所在時區的本地日期時間值,因此您需要根據本地計算機所屬的時區獲取日期。

例如,轉換爲IST(印度標準時間)使用偏移的5.30

SELECT SWITCHOFFSET(SYSDATETIMEOFFSET(), '+05:30') as [CurrentDateTime] 

所以在您的查詢,你可以做的改變

. 
. 
AND CONVERT(DATE, r2.ARRIVAL_DATE) = CONVERT(DATE, SWITCHOFFSET(SYSDATETIMEOFFSET(), '+05:30')) 

SYSDATETIMEOFFSET()