2013-12-02 3 views
0

Я храню некоторые отчеты пользователей в mysql db.Сравнение mysql datetime с php YY

report_id, report_date 

Я использую MySQL DateTime (YYYY-MM-DD HH: II: сс) для report_date колонки. мне нужно получить

1) Сегодня записи с помощью PHP у-м-д

2) записей между двумя датами через

Использование функции EXTRACT я видел YEAR, YEAR_MONTH. Но я не нашел способ получить ГОД МЕСЯЦ И ДАТА

+0

Вопросы обычно поставляются с кодом, а не с перечнем требований. –

+0

Я использовал WHERE DATE_FORMAT (report_date, '% Y% m% d') = '20131130' для сравнения с сегодняшней датой. Он отлично работает. Но как я могу получить записи между двумя датами. Поскольку DATE_FORMAT возвращает дату как строку, < and > не работает с ней – nani1216

ответ

0

Попробуйте это. Начальная дата [старт] Конечное время и дата: [останов]

затем разница b/w два раза.

mysql_query("select TIMEDIFF(stop,start) from `time`") 
+0

Мне не нужна разница во времени. Мне нужны записи между двумя датами – nani1216

+0

Я хочу сравнить report_time между датой начала и датой окончания. – nani1216

0

просто генерировать даты в PHP и MySQL позволяют обрабатывать сравнения:

$from = date_format($fromdate, "Y-m-d"); 
$to = date_format($todate, "Y-m-d"); 
$query = "SELECT * FROM table WHERE report_date BETWEEN '$from' AND '$to'"; 
0

Просто используйте функцию PHP date, чтобы создать необходимый формат даты.

Например:

$sql = "SELECT `id` 
     FROM `table` 
     WHERE `report_date` >= '" . date("Y-m-d") . " 00:00:00' 
     AND `report_date` <= '" . date("Y-m-d") . " 23:59:59'"; 

Это даст вам все записи на текущий день.

При необходимости вы можете объединить его с strtotime, чтобы преобразовать строку в временную метку UNIX. дата может затем обрабатывать эту временную метку:

date("Y-m-d", strtotime('last Thursday')) 

Это рассчитало бы временную отметку за прошлый четверг.

0

Вы можете использовать MySQL, встроенный функцией даты, так:

$query = "SELECT report_id FROM table WHERE date(report_date) >= date($start) AND date(report_date) <= date($end)"; 

Вам не нужно обернуть $ начало и конец $ переменных в дате(), но это только в том случае.

Надеюсь, это поможет!

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