Преобразовать формат даты SQL? [dd.mm.yy до ГГГГ-ММ-ДД]
есть ли функция mySQL для преобразования даты из формата dd.mm.yy в YYYY-MM-DD?
например, 03.09.13 -> 2013-09-03
.
Ответы
Ответ 1
Поскольку ваш ввод представляет собой строку в форме 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
. Строчная версия предназначена для двухзначных лет, а прописная - для четырехзначных.
Ответ 2
Использование
SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))
Fiddle демонстрация.
Подробнее о форматах, которые вы можете прочитать на соответствующей странице .
Подсказка: если это значение преобразования из поля не-datetime, лучше использовать тип данных DATE/DATETIME. Однако это плохая идея для работы с датами через строковые функции. Вверху есть трюк с STR_TO_DATE
(не будет повторять этот код, обновляться до соответствия)
Ответ 3
Даты сохраняются с использованием внутреннего формата. Вы можете использовать функцию date_format()
, чтобы преобразовать ее в строку, используя различные форматы. Для вашего, в частности:
select date_format(`date`, '%Y-%m-%d')