Как правильно использовать DateTimeOffset при попытке сравнить datetime с локальными смещениями - PullRequest
0 голосов
/ 19 апреля 2019

SOMETABLE

    [Last_Check_In_Time] [datetimeoffset](7) NULL,
    [Last_MSG_Sent_Time] [datetimeoffset](7) NULL,
    [Last_MSG_Received_Time] [datetimeoffset](7) NULL,
    [User_Time_Zone] [nvarchar](50) NULL,
    [Enabled] BIT NULL

Query

SELECT 
 [Last_Check_In_Time], 
 [Last_MSG_Sent_Time], 
 [Last_MSG_Received_Time],
 ISNULL([User_Time_Zone], 'Pacific Standard Time') AS [User_Time_Zone],
 [Enabled]

FROM 
    SOMETABLE
WHERE 
   [Enabled] = True
   --Not Today
   AND NOT (DATEDIFF(DAY, [Last_SMS_Sent_Time], GETUTCDATE()) = 0) 
    OR ([Last_SMS_Sent_Time] IS NULL)

  -- Filter records where people haven't checked in between 8 and 12 in their timeone Allow Nulls
   AND ([Last_Check_In_Time] AT TIME ZONE ISNULL([User_Time_Zone], 'Pacific Standard Time') NOT BETWEEN (SMALLDATETIMEFROMPARTS(YEAR(GETUTCDATE()), MONTH(GETUTCDATE()), DAY(GETUTCDATE()), 08, 00)) AT TIME ZONE ISNULL([User_Time_Zone], 'Pacific Standard Time')
                  AND (SMALLDATETIMEFROMPARTS(YEAR(GETUTCDATE()), MONTH(GETUTCDATE()), DAY(GETUTCDATE()), 23, 59)) AT TIME ZONE ISNULL([User_Time_Zone], 'Pacific Standard Time')) OR ([Last_Check_In_Time] IS NULL)

Хорошо, как и многие, прежде чем я запутался со временем,

I 'm пытаюсь запросить данные, чтобы проверить, не смещен ли datetime между 2 датами, но, кажется, он всегда возвращает все, пожалуйста, помогите. !!

Я на SQL Server 2017

PS: Last_Check_In_Time установлено, я знаю, что у меня есть или ноль ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...