проверка столбца smalldatetime, равного GetDate () - игнорирование времени - PullRequest
3 голосов
/ 05 августа 2010

У меня есть столбец типа smalldatetime, дата

Я бы хотел выполнить запрос, который только извлекает строки:

где date = convert (smalldatetime, GetDate ())

Однако, это никогда не находит совпадений, так как это также сравнивает время.

Т.е.: 01-01-2010 12:23:00! = 01-01-2010 12: 25: 00

Как найти совпадения только в части даты?

Ответы [ 6 ]

3 голосов
/ 05 августа 2010

Один из способов использования индекса

where date >= dateadd(dd, datediff(dd, 0, getdate()), 0)
and date < dateadd(dd, datediff(dd, 0, getdate()), +1)

См. Также: Как работает работа с датами в SQL Server?

2 голосов
/ 05 августа 2010

Попробуйте:

where datediff(dd, yourdate, GetDate()) = 0
1 голос
/ 05 августа 2010

Преобразование значений DateTime в значения Date. Это будет хранить только часть даты для сравнения.

Список доступных типов данных даты и времени в MSSQL: здесь .

0 голосов
/ 05 августа 2010

нашел это:

CAST(CONVERT (CHAR(8), GETDATE(), 112) AS smalldatetime)

отсюда: ссылка

этот sql работал для меня, когда я добавил поле smalldatetime в существующую таблицу:

SELECT     testing 
FROM         LTCCAssessment
WHERE     (testing = CAST(CONVERT(CHAR(8), GETDATE(), 112) AS smalldatetime))
0 голосов
/ 05 августа 2010

Вы можете попробовать:

Where CAST(FLOOR(CAST([Date] AS FLOAT)) AS DATETIME) = CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)

При этом обе даты будут выглядеть следующим образом:

2010-08-05 00: 00: 00.000

и, следовательно, сравнивать только даты, игнорируя время

0 голосов
/ 05 августа 2010
where cast(CONVERT(char(10),DATETIME_FIELD_1,101) as datetime) 
  = cast(CONVERT(char(10),DATETIME_FIELD_2,101) as datetime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...