Преобразование формата даты SQL? [dd.мм yy to YYYY-MM-DD]
есть ли функция mySQL для преобразования даты из формата dd.мм yy to YYYY-MM-DD?
например, 03.09.13 -> 2013-09-03
.
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')