Выберите строки в диапазоне дат в T-SQL - PullRequest
9 голосов
/ 09 июня 2011

У меня есть набор строк, каждая со значением даты, и мне нужно выбрать строки, которые попадают в определенный диапазон дат. Как я могу это сделать?

select * from table where convert(int,date_created) between //what should go here?

Я хочу выбрать между '20-10-2010' и '22-10-2010'.

Он продолжает жаловаться на преобразование строки в дату.

Ответы [ 2 ]

21 голосов
/ 09 июня 2011

Вам необходимо использовать ггггммдд, который является самым безопасным форматом для SQL Server

select * from table
where date_created BETWEEN '20101020' and '20101022'

Не уверен, почему вы использовали CONVERT для int там ...

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

Редактировать:

Для фильтрации за день с 20 октября 2010 по 22 октября 2010 включительно , если столбец date_created имеетраз, без применения функции к date_created:

where date_created >= '20101020' and date_created < '20101023'
2 голосов
/ 09 июня 2011

Либо не конвертируйте date_created в int, либо используйте целые числа для значений данных

Я бы оставил date_created в качестве даты.

select * from table where date_created between '20101020' and '20101022'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...