Intereting Posts
Symfony 3 – Вы запросили несуществующий сервис, который сводит меня с ума Предупреждение: preg_match (): Внутренний pcre_fullinfo () Попытка сделать пример контактной формы с symfony2 Автозаполнение для объектов PHP с классами в PDT / Netbeans? Обновление столбца MySQL, содержащего точку (.) В ее имени Как сделать тест PHPUnit, который зависит от данных ~ real ~ POST / GET? Получение имени файла (или удаление файла) с помощью дескриптора файла Как заменить только последнее совпадение строки с preg_replace? jquery – первый клик будет привязан ко всем элементам Как определить, является ли строка действительной JSON? Символ сеанса – как он работает? Автоматическое определение текущего локального времени пользователя с помощью JavaScript или PHP Выбор значения по умолчанию в выпадающем списке html Как отключить пользователей API моего сайта? В чем разница между переменной «GLOBAL» и «STATIC» в PHP?

2 Column Mysql Диапазон дат Поиск в PHP

MySQL column> sdate, edate (его 2 столбца).

sdate – дата начала запуска проекта, а edate – дата окончания окончания проекта.

поэтому мне нужно сделать поиск между ними.

<strong>Search</strong><br /> <form method="post" action="search.php"> Start Report Date : <input type="text" name="sdate" /> End Report Date : <input type="text" name="edate" /> <input type="submit" name="Submit" value="Search" /> </form> This is example data in mysql sdate Project Name edate 22 December 2008 project 1 23 December 2008 25 December 2008 project 2 26 December 2008 24 December 2008 project 3 27 December 2008 1 January 2008 project 4 20 January 2008 10 December 2008 project 5 12 December 2008 

поэтому скажем, что пользователь ввел sdate (например, 22 декабря 2008 г.) и edate (например, 30 декабря 2008 г.).

Он должен отображать

 22 December 2008 project 1 23 December 2008 25 December 2008 project 2 26 December 2008 24 December 2008 project 3 27 December 2008 

Так что мне нужен sql-запрос php code, который должен отображать записи между этими двумя датами ..

Пожалуйста, помогите мне..

Огромное спасибо..

предполагая, что ваши sdate и edate из столбцов MySQL типа DATE вы можете сделать следующее:

 SELECT Project_Name , sdate , edate FROM your_table WHERE sdate <= '2008-12-26' AND edate >= '2008-12-26' 

или вы можете использовать DATEDIFF

 SELECT Project_Name , sdate , edate FROM your_table WHERE DATEDIFF(sdate, '2008-12-26') <= 0 AND DATEDIFF(edate, '2008-12-26') >= 0 

Первый из них более эффективен, поскольку MySQL может сравнивать все строки в таблице со статическим значением. Для второго решения нужно рассчитать разницу для каждой строки в таблице.

Если sdate и edate не столбцы DATE, вам не повезло и их нужно сначала изменить.

Кажется, что простой запрос select с предложением «где» может сделать трюк.

Peuso-код:

 select sdate, name, edate from your_table where sdate >= '22 December 2008' and edate <= '30 December 2008' 

В стороне, чтобы помочь с пользовательским интерфейсом, я рекомендую использовать метод phps strtotime () … он делает для ввода даты очень гибкой

Сначала используйте mktime () на вкладке пользователя

 $time = mktime(format from user); 

затем сделайте

 SELECT Project_Name, sdate, edate FROM table WHERE UNIX_TIMESTAMP(STR_TO_DATE(sdate, '%e %m %Y')) <= '$time' AND UNIX_TIMESTAMP(STR_TO_DATE(edate, '%e %m %Y')) >= '$time' 

Это должно сработать.

SELECT project_name, sdate, edate FROM projects WHERE sdate <= $ _POST ['edate'] И edate> = $ _POST ['sdate']

Дает вам любой проект с датой начала и датой окончания, которая перекрывает дату начала и дату начала формы. (при условии, что форма sdate и edate находятся в правильном формате)