Измените формат даты (в БД или выводе) на дд/мм/гггг - PHP MySQL


MySQL хранит дату в моей базе данных (по умолчанию) как "ГГГГ-ММ-ДД". Тип поля для моей даты - "ДАТА" (мне не нужно хранение времени).. Есть ли простой способ изменить его по умолчанию на ДД/ММ/ГГГГ?

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

Author: John Conde, 2010-03-19

7 answers

В 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
 18
Author: Pascal MARTIN, 2010-03-19 19:57:08

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

SELECT DATE_FORMAT(some_date_field, "Y/m/d");
 4
Author: John Conde, 2010-03-19 19:56:31

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

Дата эха ("d/m/Y", strtotime ($your_date));

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

 2
Author: D.Martin, 2010-03-19 20:06:50

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

 1
Author: St. John Johnson, 2010-03-19 19:57:42

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

 1
Author: PSyLoCKe, 2013-03-01 12:17:34

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

$(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.

 1
Author: Nurfaezah Hanis, 2016-04-05 01:57:20

Эта функция mysql вернет правильный формат в результате

SELECT DATE_FORMAT(date_field, "%M %d %Y");
 0
Author: Nandhini, 2018-03-21 14:24:20