Допустим у нас есть задача - вывести из таблицы заказы, которые были сделаны с 4 по 5 февраля 2011 года (данные в таблице хранятся в формате DATETIME) , пишем в скрипте
запрос будет выполняться такой
вроде бы всё должно работать, но при использовании DATETIME за 5-е февраля заказы не отобразятся. Почему? Сейчас расскажу!
mysql подставляет в запрос недостающие данные и получается что то вроде
Т.е. за 5е число он выводит заказы только те, который были сделаны ровно в полночь и которые до этого, т.е. 4го числа, для корректной выборки заказов в диапазоне дат нужно делать так
в результате запрос будет таким
Теперь заказы выведутся за всё 4е число и за всё 5е.
"SELECT * FROM orders where `date`>='".$date1."' AND `date`<='".$date2."'"
запрос будет выполняться такой
SELECT * FROM orders where `date`>='2011-02-04' AND `date`<='2011-02-05'
вроде бы всё должно работать, но при использовании DATETIME за 5-е февраля заказы не отобразятся. Почему? Сейчас расскажу!
mysql подставляет в запрос недостающие данные и получается что то вроде
SELECT * FROM orders where `date`>='2011-02-04 00:00:00' AND `date`<='2011-02-05 00:00:00'
Т.е. за 5е число он выводит заказы только те, который были сделаны ровно в полночь и которые до этого, т.е. 4го числа, для корректной выборки заказов в диапазоне дат нужно делать так
"SELECT * FROM orders where `date`>='".$date1." 00:00:00' AND `date`<=' 23:59:59".$date2."'"
в результате запрос будет таким
SELECT * FROM orders where `date`>='2011-02-04 00:00:00' AND `date`<='2011-02-05 23:59:59'
Теперь заказы выведутся за всё 4е число и за всё 5е.
3 комментария:
Спасибо
Спасибо тебе, добрый человек!
Спасибо!!!
Отправить комментарий