Сравнение строковых дат, извлеченных из базы данных MySql - PullRequest
0 голосов
/ 21 августа 2011

У меня есть отношение в базе данных MySQL, которое хранит даты в форме varchar вместе с другими атрибутами. Это выглядит примерно так:

Ответы answerId ответ QuestionID дата

У меня есть веб-приложение, в котором пользователь будет выбирать «от» и «до» даты, и мне нужно будет вывести соответствующие ответы между предоставленными диапазонами. Поэтому мой вопрос заключается в том, как мне реализовать php-файл, который правильно запрашивал базу данных, извлекая ответы между указанными датами ...

Ответы [ 3 ]

1 голос
/ 21 августа 2011

Вот простое решение для этого:

Вы можете преобразовать дату (которая уже сохранена в вашей базе данных MySQL) в Время Unix и сравнить ее как любое число.

например

$date1 =  strtotime("2010-11-12");  
$date2 =  strtotime("2010-11-14");  

и просто сравните $date1 и $date2.

вот ссылка, которая поможет вам http://php.net/manual/en/function.strtotime.php

1 голос
/ 21 августа 2011

Как писал @RiaD, вы используете правильные типы дат.Но если вы не можете изменить тип, вам следует преобразовать строку Varchar в DATETIME, используя STR_TO_DATE .

См. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

Таким образом, ваш запрос будет выглядеть как

Select * from table
where STR_TO_DATE(field_name, 'YOUR_DATE_FORMAT') between start_date and end_date;
1 голос
/ 21 августа 2011

Если ваша дата в YY-mm-dd (от наибольшего к низшему, с ведущими нулями), вы можете сравнить ее как строку (лексикографически)

Но вы должны использовать правильный тип данных для даты (DATE, DATETIME, TIMESTAMP)

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