Как проверить два datetime на равенство в T-SQL (игнорируя их временные компоненты)? - PullRequest
1 голос
/ 17 сентября 2009

Как я могу проверить две даты (не включая их компоненты времени) на равенство?

Ответы [ 4 ]

6 голосов
/ 17 сентября 2009

Лучше всего использовать DATEDIFF

Например, чтобы сравнить только месяцы:

SELECT DATEDIFF (месяц, '2005-12-31 23: 59: 59.9999999', '2006-01-01 00: 00: 00.0000000');

Это лучший способ для сравнения и определения различий на основе вашей точной потребности в запросе, который вы делаете. Даже до миллисекунды.

2 голосов
/ 17 сентября 2009

Чтобы проверить, равны ли две даты, игнорируя компонент времени:

SELECT DATEDIFF(day, @first, @second) = 0

Чтобы проверить, равны ли два раза, игнорируя компонент даты:

SELECT DATEADD(day, -DATEDIFF(day, 0, @first), @first) =
    DATEADD(day, -DATEDIFF(day, 0, @second), @second)
2 голосов
/ 17 сентября 2009
DATEDIFF(day, rem.DueDate , GETDATE()) = 0 
0 голосов
/ 17 сентября 2009

Это должно работать:

SELECT * FROM MyTable 
WHERE floor(convert(real,date1))=floor(convert(real,date2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...