Преобразование формата даты SQL? [ДД.мм. гг гггг-ММ-ДД]


Есть функция MySQL для преобразования даты из формата ДД.мм. гг гггг-ММ-ДД?

Например, 03.09.13 -> 2013-09-03.

3 10

3 ответа:

Поскольку вы вводите строку в виде 03.09.13, я буду считать (поскольку сегодня 3 сентября 2013 года), что это dd-mm-yy. Вы можете преобразовать его в дату, используя STR_TO_DATE:

STR_TO_DATE(myVal, '%d.%m.%y')

Затем вы можете отформатировать его обратно в строку, используя DATE_FORMAT:

DATE_FORMAT(STR_TO_DATE(myVal, '%d.%m.%y'), '%Y-%m-%d')
Обратите внимание, что год %y (нижний регистр "y") в STR_TO_DATE и %Y (верхний регистр "Y") в DATE_FORMAT. Строчная версия предназначена для двухзначных лет, а прописная-для четырехзначных лет.

Использовать

SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))

Скрипкадемо .

Подробнее о форматах вы можете прочитать в соответствующем руководстве . Совет: если речь идет о преобразовании значения из поля не-datetime-лучше использовать тип данных DATE/DATETIME. Однако этоплохая идея оперировать датами через строковые функции. Выше есть хороший трюк с STR_TO_DATE (Не буду повторять этот код, обновлено, чтобы соответствовать лучше)

Даты хранятся с использованием внутреннего формата. Вы можете использовать функцию date_format() для преобразования ее в строку, используя различные форматы. Для вашего в частности:

select date_format(`date`, '%Y-%m-%d')