Как сравнить пользователя, передавшего строку y / m / d, с датой и временем в mysql? - PullRequest
0 голосов
/ 04 января 2012

У меня есть переменная, которую пользователь указывает $start_date в формате y-m-d.

, скажем, например, $start_date = '2011-10-27';

В моей базе данных у меня есть поле DATETIME,давайте назовем это sample_date, которое выглядит следующим образом: 2011-10-27 14:15:20

Когда я запускаю sql-запрос с использованием $ start_date .. мне нужно конвертировать, чтобы сравнить даты, такие как

SELECT * from content WHERE sample_date >= $start_date

или я долженсначала преобразовать это как-то

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Вам не нужно преобразовывать значение, если вы проверили формат, но вы должны обязательно очистить входные данные, чтобы предотвратить атаки XSS и другие неприятности.Здесь также будет хорошо выпадающий список календаря.

РЕДАКТИРОВАТЬ: Вау сейчас ... Я вижу, вы редактировали свой вопрос, и форматы разные.Это меняет все!Комментарий Михаэля является правильным ответом, используйте функцию strtotime (), чтобы преобразовать дату в метку времени Unix, а затем воссоздать дату в нужном нужном формате ... вот так ... date ('Ym-d', strtotime ($ start_date)))

0 голосов
/ 04 января 2012

Просто замените косую черту тире.

$start_date = str_replace('/','-',$start_date);
$start_date = mysql_real_escape_string($start_date);
0 голосов
/ 04 января 2012

Просто добавьте несколько нулей к этому:

$start_date = "2010-10-27";
$start_date .= " 00:00:00";

РЕДАКТИРОВАТЬ: Тестирование подтверждает, что это не нужно.Пока столбец mysql отформатирован в DATETIME, он понимает «2010-10-27».

ОДНАКО!В вашем примере будет выдано сообщение об ошибке, так как значение «Больше или равно» должно быть написано «> =», а не «=>»

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