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
установлено, я знаю, что у меня есть или ноль ..)