Как мне проверить, что дата с отметкой времени записи раньше полуночи?
Датифф сводит меня с ума ...
Добавьте 1 день и вычтите 4 мс. IIRC SQL обрабатывает дату и время с точностью до трети миллисекунды. Таким образом, 2008-11-21 23: 59: 59.997 будет "округлено" до 2008-11-22 00: 00: 00.000. Это вызвало несколько ошибок в некоторых программах для создания отчетов, которые я поддерживал.


Пытаться:
WHERE dtColumn < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Вот как получить 0 часов сегодняшнего дня в SQL
SELECT (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime))
Просто сравните свое время с этим.
Не используйте приведение типов varchar, так как они медленные.
Проверить этот список для получения дополнительной справки по дате и времени.
Я считаю предпочтительным метод dateiff-dateadd, как показано @CadeRoux
Мне было бы любопытно узнать, есть ли между ними разница в производительности.
Попробуй это:
where myColumn < cast( (cast(getdate() - 0.5 as int)) as datetime)
Вы имеете в виду, что тип данных используемого вами столбца - «TimeStamp», а не dateTime или smalldatetime?
Если так, то вам не повезло. Этот тип данных не имеет ничего общего с датами или временем (это действительно вводит в заблуждение ...) Он просто гарантированно будет хронологически уникальным и последовательным ... Но нет никакого способа сравнить его с datetime
http://msdn.microsoft.com/en-us/library/aa260631(SQL.80).aspx
http://www.sqlteam.com/article/timestamps-vs-datetime-data-types
Если ColumnName (столбец, который вы исследуете) имеет тип данных datetime, а НЕ метку времени, тогда самый быстрый подход
Select Case DateDiff(day, columnName, getDate())
When 0 Then 'Today' Else 'Earlier' End
From TableName
предполагая, что все значения дат в ColumnName сейчас или раньше ...
Самый простой способ думать о datiff - это подсчет количества "границ" указанного типа, которые вам нужно передать, чтобы перейти от одного datetime к другому ...
Если сегодня было 21.11.2008, вы имеете в виду все до 23:59 21.11.2008 включительно или 00:00 21.11.2008? Большинство ответов пока предполагают более позднее. В этом случае вы можете просто добавить день к этим результатам.