MySQL хранит дату в моей базе данных (по умолчанию) как 'YYYY-MM-DD', типом поля для моей даты является 'ДАТА' (мне не нужно никакое устройство хранения данных времени).. Существует ли простой способ изменить его по умолчанию на DD/MM/YYYY?
Я называю различные даты в 2 различных таблицах, и не где в любом моем коде делают у меня есть что-либо напоминающее переменную даты или что-либо! Надо надеяться, это - прямое изменение?
В PHP вы можете :
Примерно так, я бы сказал :
$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
для разбора даты, возвращаемой DBDateTime::format
для форматирования даты в любой формат, который вы хотите. Например, эта часть кода :
$date = new DateTime('2010-03-19');
echo $date->format('d/m/Y');
даст вам такой результат:
19/03/2010
Вы можете отображать дату в любом формате на ваших страницах, в mysql я действительно не знаю, в php вы можете использовать эту функцию: date (строка $ 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)
, чтобы получить его в этом формате.
Просто используйте встроенную функцию Mysql DATE_FORMAT()
SELECT DATE_FORMAT(some_date_field, "Y/m/d");