MySql запрос для диапазона дат в PHP - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть база данных MySql, которая использует поле отметки времени для отслеживания вставки записи.

Теперь я хочу запросить таблицу для записей по диапазону дат.

Я бы предпочел использовать MySql для извлечения записей вместо извлечения всех записей, а затем повторять и сравнивать даты в php.

Итак, у меня есть дата начала и окончания. Я пробовал формат ГГГГММДД и ГГГГ-ММ-ДД безуспешно при выполнении этих двух типов запросов:

// this doesn't appear to be working
SELECT COUNT(*) FROM table_name 
WHERE DATE(timestamp_row) BETWEEN '{$date1}' AND '{$date2};

// this doesn't appear to be working either
SELECT COUNT(*) FROM table_name 
WHERE DATE(timestamp_row) >= {$date1}
AND DATE(timestamp_row) <= {$date2};

Похоже, что функция Mysql DATE () превращает отметку времени в этот формат: YYYY-MM-DD

Есть ли способ сделать это.

Ответы [ 4 ]

0 голосов
/ 24 декабря 2013

Поиск данных по идентификатору, но неверная дата ... Это шоу 1970/01/01

                             $book_year= Date("Y", strtotime($year));
            $book_month= Date("m", strtotime($month));
            $book_day=Date("d", strtotime($day));
            $book_date=$year."/". $month."/". $day;
                    $book_date= Date("Y-m-d", strtotime($book_date));
0 голосов
/ 24 февраля 2011

Вы можете попробовать это

SELECT COUNT(*) FROM table_name WHERE timestamp_row BETWEEN '2011-01-01 00:00:00' AND '2011-01-31 23:59:59';

Нет необходимости использовать функцию DATE MySQL в исходном запросе.

0 голосов
/ 14 марта 2013

Вы делаете даты для пользователей B'Day и, таким образом, надеетесь, что это поможет сделать форматирование и выбор даты

select id from my_table
 where
 timestamp < date_format(date_add(CURRENT_TIMESTAMP(), interval 1 day),
             '%Y%m%d000000' ) AND timestamp >=  date_format(CURRENT_TIMESTAMP(),
             '%Y%m%d000000')
0 голосов
/ 24 февраля 2011

Какие типы полей вы используете?1. DATETIME, 2. DATE, 3. TIMESTAMP

, начиная с SELECT COUNT (*) FROM table_name WHERE DATE (timestamp_row) BETWEEN '{$ date1}' AND '{$ date2};выглядит нормально, если вы используете конкретные значения вместо '{$ date1}' AND '{$ date2};может быть, что-то не так с форматированием времени в ваших строках?

Вы можете автоматически преобразовать недопустимую дату в действительный эквивалент, например так:

SELECT '2008-02-31' +ИНТЕРВАЛ 0 ДНЯ;

2008-03-02

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...