Измените формат даты (в БД или выводе) на дд/мм/гггг - PHP MySQL
MySQL хранит дату в моей базе данных (по умолчанию) как "ГГГГ-ММ-ДД". Тип поля для моей даты - "ДАТА" (мне не нужно хранение времени).. Есть ли простой способ изменить его по умолчанию на ДД/ММ/ГГГГ?
Я вызываю разные даты в 2 разных таблицах, и нигде в моем коде нет ничего похожего на переменную даты или что-то в этом роде! Надеюсь, это прямое изменение?
7 answers
В 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
для анализа даты, возвращаемой базой данных -
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 вы можете использовать эту функцию: дата (строка $формат [, int $временная метка]). Итак, вы можете сделать это:
Дата эха ("d/m/Y", strtotime ($your_date));
Вы можете найти полное описание здесь: http://php.net/manual/en/function.date.php
После получения его из базы данных используйте $time = strtotime($value)
, чтобы преобразовать его в метку времени в PHP. Затем используйте date("d/m/Y", $time)
, чтобы получить его в этом формате.
Если бы вы использовали какой-нибудь фреймворк, например 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.
Эта функция mysql вернет правильный формат в результате
SELECT DATE_FORMAT(date_field, "%M %d %Y");