SQL date format convert? [dd.mm.yy to YYYY-MM-DD]
Since your input is a string in the form 03.09.13
, I'll assume (since today is September 3, 2013) that it's dd.mm.yy
. You can convert it to a date using STR_TO_DATE
:
STR_TO_DATE(myVal, '%d.%m.%y')
Then you can format it back to a string using DATE_FORMAT
:
DATE_FORMAT(STR_TO_DATE(myVal, '%d.%m.%y'), '%Y-%m-%d')
Note that the year is %y
(lowercase "y") in STR_TO_DATE
and %Y
(uppercase "Y") in DATE_FORMAT
. The lowercase version is for two-digit years and the uppercase is for four-digit years.
Use
SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))
Fiddle demo.
More about formats you can read in the corresponding manual page.
Tip: if this is about conversion value from non-datetime field - better to use DATE/DATETIME data type instead. However, this is a bad idea to operate with dates via string functions. Above there is a nice trick with STR_TO_DATE
(will not repeat that code, updated to fit better)
Dates are stored using an internal format. You can use the function date_format()
to convert it to a string using a variety of formats. For yours in particular:
select date_format(`date`, '%Y-%m-%d')