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