Формат даты MySQL - PullRequest
       9

Формат даты MySQL

10 голосов
/ 20 марта 2011

Когда я создаю таблицу и создаю поле типа date в mysql, он сохраняет дату как 0000-00-00. Можно ли изменить формат на «d-m-Y»?

Ответы [ 5 ]

12 голосов
/ 20 марта 2011

Перейти к Справочник по MySQL - 10.5.Тип данных Требования к хранилищу

Поиск: Требования к хранилищу для типов даты и времени

Даты внутренне хранятся как A three-byte integer packed as DD + MM×32 + YYYY×16×32

НоЕсли вы выберете для отображения столбец даты , он должен отображаться некоторым способом, поэтому он будет отображаться как 0000-00-00.Это , а не , сохраненные в виде символа (10) с этим конкретным форматом.

Если для отображения вам нужен конкретный формат, вы можете преобразовать егодля VARCHAR в определенном формате, используя Date_Format () .Однако имейте в виду, что если вы используете запрос в инструменте программирования, это , а не , что вы хотите сделать.Вам нужно необработанное значение даты , для целей отображения будет использоваться аналогичная функция форматирования из любой среды программирования, которую вы используете.

Как вы можете видеть из ссылки в DATE_FORMAT, вам понадобитсяиспользовать '%d-%m-%Y', например

SELECT col1, col2, DATE_FORMAT(datecolumn, '%d-%m-%Y') AS datecolumn, more1...
FROM sometable
....
5 голосов
/ 20 марта 2011

Нет, это невозможно.Но вы можете использовать DATE_FORMAT, чтобы выбрать этот путь.

SELECT Date_format(mydatefield, '%d-%m-%Y') 
FROM   table 
2 голосов
/ 20 марта 2011

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

Вы можете сделать это либо на стороне приложения, либо напрямую с помощью запроса:

SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ...
0 голосов
/ 16 мая 2017

Я вижу использование обоих, но нахожу этот макет более полезным в качестве справочного инструмента:

SELECT DATE_FORMAT('2004-01-20' ,'%Y-%m-01');

enter image description here

0 голосов
/ 23 августа 2013

Вы можете сделать это, используя SQL

SELECT DATE_FORMAT(date_field, "%d-%m-%Y") FROM ...

Или, если вы используете PHP, вы можете достичь тех же результатов:

echo date('d-m-Y', $originalDate);  //You will get something like 09-08-2013 (Aug 8th, 2013)
echo date('j-n-y', $originalDate);  //You will get something like 9-8-13 (Aug 8th, 2013)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...