есть функция mySQL для преобразования даты из формата dd.mm.yy в YYYY-MM-DD?Формат даты в формате SQL? [dd.mm.yy to YYYY-MM-DD]
например, 03.09.13 -> 2013-09-03
.
есть функция mySQL для преобразования даты из формата dd.mm.yy в YYYY-MM-DD?Формат даты в формате SQL? [dd.mm.yy to YYYY-MM-DD]
например, 03.09.13 -> 2013-09-03
.
Поскольку ваш вклад является строка в виде 03.09.13
, я буду считать (так как сегодня 3 сентября 2013), что это дд-мм-гггг. Вы можете преобразовать его в дату, используя 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
(в нижнем регистре «у») в STR_TO_DATE
и %Y
(верхний регистр «Y») в DATE_FORMAT
. В нижнем регистре для двухзначных лет, а в верхнем регистре - четырехзначные годы.
DATE_FORMAT (STR_TO_DATE (myVal,'% d.% M.% Y '),'% Y-% m-% d ') Y - заглавная буква –
Rajavel - это строчная буква 'y' в первом, потому что входная строка имеет 2-значный год (' 03.09.13'). Во втором - верхний регистр, поэтому выход будет 4-значным годом ('2013-09-03'). –
Спасибо, что помогли мне понять .. –
Использование
SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))
скрипку demo.
Подробнее о форматах, которые вы можете прочитать в соответствующем manual page. Совет: если речь идет о значении преобразования из поля не-datetime, лучше использовать тип данных DATE/DATETIME. Однако это плохая идея для работы с датами через строковые функции. Вверху есть хороший трюк с STR_TO_DATE
(не будет повторяться этот код, обновляется до соответствия лучше)
Не будет работать, 'DATE_FORMAT' требует, чтобы дата ввода была в формате Y-m-d. Ваш запрос (если вы запустите его) вернет '2003-09-13', явно неверный – Lee
Да, отмечено (после отправки, к сожалению) - обновлено. –
Отменил мой голос на верх, только потому, что я не думал об этом. Не то, что я лично рекомендовал бы (так как я уверен, что вы тоже этого не сделали), но, учитывая его уникальные требования, кажется единственным способом сделать это. – Lee
Даты хранятся в формате. Вы можете использовать функцию date_format()
, чтобы преобразовать ее в строку, используя различные форматы. Для твоего, в частности:
select date_format(`date`, '%Y-%m-%d')
Является ли ваш ввод типа даты, или это строка, буквально '03.09.13'? –
@ ppeterka66 Да, и спрашивать здесь, вероятно, означает, что я не нашел/понял ответ для этого. – user2216190
@EdGibbs это строка. – user2216190