Изменить формат даты (в DB или output) на dd / mm / yyyy – PHP MySQL

MySQL хранит дату в моей базе данных (по умолчанию) как «YYYY-MM-DD». Тип поля для моей даты – «DATE» (мне не нужно какое-либо время хранения). Есть ли простой способ изменить его по умолчанию на DD / MM / YYYY?

Я вызываю разные даты в двух разных таблицах, и нет, где в каком-либо из моего кода у меня есть что-то похожее на переменную даты или что-то еще! Надеюсь, это прямое изменение?

В PHP вы можете:

  • Преобразовать дату в метку времени, используя strtotime
  • Отформатируйте его, используя дату

Немного похоже на это, я бы сказал:

 $timestamp = strtotime($date_from_db); echo date('d/m/Y', $timestamp); 

Но это будет работать только для дат между 1970 и 2038 годами, поскольку временные метки сохраняются как 32 битовые целые числа, считая с 1970-01-01.

В MySQL я полагаю, что функция date_format выполнит трюк.
Например :

 mysql> select date_format(curdate(), '%d/%m/%Y'); +------------------------------------+ | date_format(curdate(), '%d/%m/%Y') | +------------------------------------+ | 19/03/2010 | +------------------------------------+ 1 row in set (0.03 sec) 

И, ради полноты, другое решение, в PHP, которое не страдает от ограничения 1970-2038 годов, было бы использовать класс DateTime и, особенно:

  • DateTime::__construct для анализа даты, возвращаемой БД
  • DateTime::format для форматирования даты в любом формате.

Например, эта часть кода:

 $date = new DateTime('2010-03-19'); echo $date->format('d/m/Y'); 

вы получите этот результат:

 19/03/2010 

Просто используйте встроенную функцию Mysql DATE_FORMAT ()

 SELECT DATE_FORMAT(some_date_field, "Y/m/d"); 

Вы можете отображать дату в любом формате, который вы хотите на своих страницах, в mysql, которого я не знаю, в php вы можете использовать эту функцию: date (string $ format [, int $ timestamp]). Таким образом, вы можете сделать это:

echo date ("d / m / Y", strtotime ($ your_date));

Вы можете найти полное описание здесь: http://php.net/manual/en/function.date.php

Получив его из БД, используйте $time = strtotime($value) чтобы преобразовать его в метку времени в PHP. Затем используйте date("d/m/Y", $time) чтобы получить ее в этом формате.

Если вы использовали некоторые Framework, такие как Zend, это было бы очень просто, потому что у вас много классов для обработки баз данных и форматирования даты. Тогда вы всегда увидите выход в виде бразильского формата даты. Так же, как Delphi TDateField использует формат даты Windows на текущем компьютере, Zend будет искать в вашей собственной конфигурации.

Я использую этот скрипт и помещаю его в верхнюю строку.

 $(function(){ var pickerOpts = { dateFormat: "yy-mm-dd" }; $("#datepicker").datepicker(pickerOpts); }); 

и это в вашей форме.

 <input id=**"datepicker" type="date"** name="Start" size="9" value="<?php echo $Start; ?>" /> 

Он будет отображаться как d / m / y на вашей странице, но в вашей базе данных y / m / d.