Сравнение дат SQL

Как мне проверить, что дата с отметкой времени записи раньше полуночи?

Датифф сводит меня с ума ...

Если сегодня было 21.11.2008, вы имеете в виду все до 23:59 21.11.2008 включительно или 00:00 21.11.2008? Большинство ответов пока предполагают более позднее. В этом случае вы можете просто добавить день к этим результатам.

knightpfhor 21.11.2008 00:03

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

StingyJack 21.11.2008 15:40
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
1 726
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Пытаться:

WHERE dtColumn < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
Ответ принят как подходящий

Вот как получить 0 часов сегодняшнего дня в SQL

SELECT (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime))

Просто сравните свое время с этим.

Не используйте приведение типов varchar, так как они медленные.

Проверить этот список для получения дополнительной справки по дате и времени.

Я считаю предпочтительным метод dateiff-dateadd, как показано @CadeRoux

Mitch Wheat 21.11.2008 02:05

Мне было бы любопытно узнать, есть ли между ними разница в производительности.

StingyJack 21.11.2008 15:37

Попробуй это:

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 к другому ...

Другие вопросы по теме