#php #mysql #datetime #date-formatting
#php #mysql #datetime #форматирование даты
Вопрос:
У меня есть столбец, который хранит DateTime в базе данных MySQL. Я хочу сравнить часть даты (а не время) с текущим днем. Я не уверен, какой метод использовать, поскольку я очень новичок в PHP.
$today=date("Y-m-d");
$sql="SELECT journey_id FROM tbl_journeys WHERE identity='$driver_id' AND DATE_FORMAT(`date`, '%Y %m %d')='$today'";
Я пробовал этот способ, но он не работает. В инструкции date
есть столбец в таблице, который мне нужно обрезать только до Year-month-day
Комментарии:
1. Почему бы не использовать функцию MySQL сегодня?
AND DATE(date) = TODAY()
2. Переверните часть даты другим способом. Форматируйте переменную $today, а не столбец.
3.
$today
содержит-
между частями даты, ноDATE_FORMAT()
помещает пробелы между ними. Как вы ожидаете, что они будут равны?4. @Barmar ты прав… Я добавил тире, и это не сработало, но я также понял, что время моего сервера неверно
Ответ №1:
Вы используете разные символы между годом, месяцем и днем в двух форматах.
$today=date("Y-m-d");
помещает дефисы между ними, в то время как
DATE_FORMAT(`date`, '%Y %m %d')
помещает пробелы между ними.
Измените один из них, чтобы он соответствовал другому, например
DATE_FORMAT(`date`, '%Y-%m-%d')
Или вы могли бы просто сделать все это в MySQL:
$sql="SELECT journey_id FROM tbl_journeys
WHERE identity='$driver_id' AND DATE(`date`) = TODAY()";
Комментарии:
1. После добавления тире и правильной настройки времени сервера это сработало