MS SQL - формат даты yyyyDDmm в предложении WHERE

Как пользоваться WHERE пункт для yyyyMMdd формат даты, если мне нужно отфильтровать строки, где yyyy-MM-dd hh:mm:ss.mmm формат даты и времени?

Например: SELECT * FROM orders WHERE order_date = '20140510'

Кстати, этот пример работает для строк, где yyyy-MM-dd 00:00:00.000 формат даты и времени.

3 ответа

Решение

Вы можете сделать это путем преобразования значения даты и времени следующим образом:

declare @date datetime
set @date = '2014-09-04 15:52:00.000'
print CONVERT(VARCHAR(20), @date, 112)

вы получите этот вывод консоли:

20140904

Так что в вашем сценарии вы можете сделать это так:

SELECT * FROM orders WHERE CONVERT(VARCHAR(20), order_date, 112) = '20140510'

Пожалуйста, попробуйте следующее. Это позволяет любые индексы на order_date использоваться, если вы используете CAST или же CONVERT на order_date MSSQL не сможет использовать ваши индексы.

SELECT * FROM orders WHERE order_date >= '20140510' and order_date < '20140511'

Использовать конвертировать

@date = '20140510'
    SELECT * FROM orders WHERE order_date = CONVERT(date, CONVERT(varchar(8),@date ), 126)
For more info http://msdn.microsoft.com/en-IN/library/ms187928.aspx
Другие вопросы по тегам