Преобразование формата даты SQL? [ДД.мм. гг гггг-ММ-ДД]
Есть функция MySQL для преобразования даты из формата ДД.мм. гг гггг-ММ-ДД?
Например, 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
(Не буду повторять этот код, обновлено, чтобы соответствовать лучше)