Форматирование столбца DateTime в PHP

#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. После добавления тире и правильной настройки времени сервера это сработало