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.