2017-02-18 4 views
2

Я запрашиваю даты из базы данных mysql. Когда я пытаюсь выбрать только даты между определенным от и до настоящего времени, я не получаю ожидаемых результатов.Как проверить, существует ли дата между двумя датами mysql?

Мой запрос:

select * from tbl_billing where date BETWEEN '09-02-2017' and '10-02-2017' 

Мой выход:

09-02-2017 
10-02-2017 
10-01-2017 
09-01-2017 
09-01-2017 

Мой желаемый результат:

09-02-2017 
10-02-2017 
+0

что ваш тип поля даты в тузд таблице? –

+1

'' dd-mm-yyyy'' не является допустимым MySQL [date literal] (https://dev.mysql.com/doc/en/date-and-time-literals.html). – eggyal

ответ

1

Вы можете использовать канонический формат даты SQL

select * from tbl_billing where date BETWEEN '2017-02-09' and '2017-02-10' 

или преобразующих должным образом с помощью str_to_date

select * from tbl_billing where date BETWEEN str_to_date('09-02-2017', '%d-%m-%Y') 
      and str_to_date('10-02-2017', '%d-%m-%Y') 

, но если и ваш date является VARCHAR, то вы должны преобразовать этот столбец слишком

select * from tbl_billing where str_to_date(date,'%d-%m-%Y') BETWEEN str_to_date('09-02-2017', '%d-%m-%Y') 
      and str_to_date('10-02-2017', '%d-%m-%Y') 
+0

Привет, Роман, спасибо, посоветовал мне, но проблема заключалась в том, что мой тип данных даты - varchar, и я не могу изменить его, потому что я использовал его на многих страницах, поэтому невозможно изменить тип данных varchar на сегодняшний день. если у вас есть решение, скажите, пожалуйста, roman sir – phpguru

+1

@phpguru Измените его. Измените страницы. В противном случае нет «гуру» !! – Strawberry

+0

@phpguru, если у вас также есть столбец даты, как varchar, тогда вы должны преобразовать столбец тоже .. ответ обновлен .. я знаю – scaisEdge

Смежные вопросы