Intereting Posts
проверить форму перед отправкой (более сложной, чем проверка пустых полей) В моем php-скрипте более крупный файл занимает больше времени для загрузки и его привязки max_execution_time Как использовать nl2br () для обработки строки с помощью '\ r \ n'? PHP-доступ к внешнему $ var изнутри функции класса «Смешанный контент заблокирован» при выполнении операции HTTP AJAX на странице HTTPS Информация о потоке PHP в контроллере Каков наилучший способ передать переменную PHP в Javascript? Как отредактировать мой код, чтобы он печатал все блоки строки JSON, а не только первый? Предупреждение: preg_match () : Неизвестный модификатор '(' Нужна помощь в создании динамического меню Есть ли способ автоматически фильтровать параметры getRequest () в Zend? Разрешать только определенные символы в строке Изменение заголовков и сохранение файла Kohana 3.3 не использует драйвер MySQLi Ежедневные журналы Lumen

Выберите данные между двумя датами?

Я использую базу данных для хранения журналов со столбцом «дата», который содержит дату, в которую он был вставлен. Формат даты – «MM / DD / YY». Пожалуйста, кто-нибудь может предложить, как бы я выбрал данные между двумя определенными датами. Например, я попробовал это:

$from_date = "01/01/12"; $to_date = "02/11/12"; $result = mysql_query("SELECT * FROM logs WHERE date >= " . $from_date . " AND date <= " . $to_date . " ORDER by id DESC"); while($row = mysql_fetch_array($result)) { // display results here } 

Но я думаю, это не работает, потому что даты не являются цифрами. Спасибо за помощь! 🙂

Используйте ключевое слово BETWEEN :

 "SELECT * FROM logs WHERE date BETWEEN '" . $from_date . "' AND '" . $to_date . "' ORDER by id DESC" 

Вы можете указать поля в качестве дат, а затем выбрать from_date и to_date

 SELECT * FROM logs WHERE date STR_TO_DATE(date, '%m/%d/%Y') between STR_TO_DATE(from_date, '%m/%d/%Y') and STR_TO_DATE(to_date, '%m/%d/%Y') 

Ответ на ваш вопрос зависит от типа данных, который используется для хранения поля date в таблице logs .

SQL (MySQL в вашем случае) полностью способен сравнивать даты. Обычно используется оператор BETWEEN .. AND .. но это не будет работать корректно, если тип date CHAR (или VARCHAR) – в этом случае вам нужно будет указать поле date в DATETIME перед сравнением.

Вам нужно добавить одинарные кавычки к значениям даты '01 / 01/12 ':

 $from_date = "01/01/12"; $to_date = "02/11/12"; $result = mysql_query("SELECT * FROM logs WHERE date >= '" . $from_date . "' AND date <= '" . $to_date . "' ORDER by id DESC");