Каков хороший способ проверить, находятся ли два даты и времени в один и тот же календарный день в TSQL?

Вы в значительной степени sql-server должны содержать левую часть transact-sql предложения where в чистоте. Итак, обычно sql-query вы делаете что-то вроде:

WHERE MyDateTime >= @activityDateMidnight 
      AND MyDateTime < (@activityDateMidnight + 1)

(Некоторые ms-sql-server люди предпочитают вместо user-defined-functions этого DATEADD(d, 1, @activityDateMidnight) - но mssql это одно и то же).

Однако sql таблица TimeZone немного transact-sql усложняет дело. Это немного tsql неясно из вашего фрагмента, но sql-select похоже, что t.TheDateInTable ms-sql-server находится в GMT с идентификатором sql-select часового пояса, и что затем tsql вы добавляете смещение для transact-sql сравнения с @activityDateMidnight, которое sql-query находится в местном времени. Однако transact-sql я не уверен, что такое ds.LocalTimeZone.

Если mssql это так, то вместо этого datetime-functions вам нужно перевести @activityDateMidnight mssql в GMT.

sql

sql-server

tsql

datetime

user-defined-functions

2022-10-25T08:57:48+00:00
Вопросы с похожей тематикой, как у вопроса:

Каков хороший способ проверить, находятся ли два даты и времени в один и тот же календарный день в TSQL?