Member 10549697 Ответов: 4

Как использовать оператор between для дат


выберите * из таблицы, где Дата между "23/3/2016" и "23/3/2016"

Что я уже пробовал:

Я пытаюсь запустить этот запрос, но он дает мне данные между двумя датами и не показывает мне данные для 1-й и последней даты

Member 10549697

скорее всего, я попробовал 23/3/2016 11: 59:59, и это работает для меня, но я не хочу использовать это

4 Ответов

Рейтинг:
9

Vignesh Mani

выберите * из Table_Name, где myDateTime >= '2008-01-01'
И myDateTime <= '2008-04-01'


Рейтинг:
30

Jochen Arndt

Я видел, что вы уже нашли решение, но думаю, что стоит дать объяснение тому, что происходит.

То Date столбец из вашей таблицы, вероятно, является DateTime содержит дату и время. Если в запросе используется дата без времени, то часть времени неявно устанавливается в 00:00:00. Таким образом, эффективный запрос будет

select * From Table where Date BETWEEN '23/3/2016 00:00:00' AND '23/3/2016 00:00:00'

Это относится и к использованию сравнения. BETWEEN.

Таким образом, есть два общих решения:

Воспользуйся BETWEEN со временем для даты окончания:
select * From Table where Date BETWEEN '23/3/2016' AND '23/3/2016 23:59:59.999'

Или используйте меньше чем сравнение для даты окончания со следующим днем:
select * From Table where Date >= '23/3/2016' AND Date < '24/3/2016'


Рейтинг:
20

Member 10549697

Я нашел это решение

выбрать * из таблица где функция datediff(день,ColName,23/3/2016) &ЛТ;=0 и функция datediff(день,ColName,23/3/2016)&ГТ;=0


Richard Deeming

Это предотвратит использование базой данных любого индекса на ColName для выполнения запроса. Ему всегда придется сканировать всю таблицу, чтобы найти соответствующие записи.

Решение 4-гораздо лучший вариант.

Рейтинг:
2

Tushar sangani

Я использую этот тип запроса для получения всех результатов между первой датой и последней датой

select * From Table where Date >='23/3/2016' AND  Date <='23/3/2016' 

select * from non_gia_search_history where convert(varchar(10),create_time,110)>='03-15-2016' and convert(varchar(10),create_time,110) <='03-19-2016'


Member 10549697

На самом деле я пробовал это сделать, но это работает так BETWEEN.so эти оба метода дают одинаковые результаты

Tushar sangani

в дата ООО "Филд" вставить как 23/3/2016 или 23/3/2016 00:00:00 ??

Tushar sangani

Я получил это, пожалуйста, проверьте формат даты в поле даты - ДД/ММ/гггг, если нет, пожалуйста, установите его
любить

выберите * от non_gia_search_history где конвертировать(тип varchar(10),create_time,110)&ГТ;='03-15-2016 и конвертировать(тип varchar(10),create_time,110) &ЛТ;='03-19-2016'

Richard Deeming

Это предотвратит использование базой данных любого индекса в столбце для выполнения запроса. Ему всегда придется сканировать всю таблицу, чтобы найти соответствующие записи.

Решение 4-гораздо лучший вариант.