GETDATE()与我的系统时间不匹配

时间:2016-12-06 05:31:05

标签: sql sql-server date

我的系统昨天返回所有数据,但它应该做的是它应该从今天返回所有数据,我的代码在本地数据库上工作,但当我上传到网上并开始使用在线数据库时问题发生

这是我的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())

1 个答案:

答案 0 :(得分:4)

发生这种情况可能是因为在线数据库服务器与您的本地计算机处于不同的时区。

GETDATE()返回数据库dserver所在时区的本地日期时间值,因此您需要根据本地计算机所属的时区获取日期。

EG。转换为IST(印度标准时间)使用偏移+5.30

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

因此,在您的查询中,您可以进行更改

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

SYSDATETIMEOFFSET()