MySQL запрос - формат даты на выходе? - PullRequest
1 голос
/ 04 января 2011

В моей таблице даты хранятся так: 2011-03-03T13: 30: 00

Я пытаюсь вывести даты так: 3 марта 2011 г. 13:30

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

Ответы [ 4 ]

9 голосов
/ 04 января 2011

У вас, по сути, есть две разные операции, которые вам могут понадобиться при обработке дат: дата в строку и наоборот.Вы можете использовать следующие функции: DATE_FORMAT() и STR_TO_DATE().Полную ссылку можно найти в руководстве .

Пример использования:

SELECT
    DATE_FORMAT(CURRENT_TIMESTAMP, '%d/%m/%Y %H:%i:%s'),
    STR_TO_DATE('31/12/2001 23:55:00', '%d/%m/%Y %H:%i:%s')

Если ваши даты не являются реальными датами, а являются строками, вам необходимо преобразовать дважды : от строки к дате и снова от даты к строке:

SELECT
    STR_TO_DATE('2011-03-03T13:30:00', '%Y-%m-%dT%H:%i:%s'),
    DATE_FORMAT(STR_TO_DATE('2011-03-03T13:30:00', '%Y-%m-%dT%H:%i:%s'), '%M %e, %Y %l:%i %p')
0 голосов
/ 04 января 2011

Вы должны действительно использовать поле DATETIME для таких вещей (и очищать ввод по пути) вместо того, чтобы разбирать его в точке вывода.

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

0 голосов
/ 04 января 2011

Формат хранения даты MySQL на самом деле YYYY-MM-DD, но с помощью функций str_to_date () и date_format () вы можете принять и сгенерировать любой требуемый формат даты.


select DATE_FORMAT(DateTable.MyDate,'%d %b %y')
from DateTable

would return

04 Nov 08

0 голосов
/ 04 января 2011

Использование DATE_FORMAT:

DATE_FORMAT(date, "%M %e, %Y %h:%i %p")
...