SQL日期格式转换? [dd.mm.yy到YYYY-MM-DD]

时间:2013-09-03 16:21:07

标签: mysql sql date format sql-function

是否有mySQL函数将日期格式从dd.mm.yy转换为YYYY-MM-DD?

例如03.09.13 -> 2013-09-03

3 个答案:

答案 0 :(得分:33)

由于您的输入是03.09.13形式的字符串,因此我假设(自今天起是2013年9月3日)它是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中的STR_TO_DATE年份(小写" y")和%Y中的DATE_FORMAT(大写" Y") 1}}。小写版本为两位数年份,大写版本为四位数年份。

答案 1 :(得分:4)

使用

SELECT CONCAT(
'20',
SUBSTR('03.09.13', 7, 2),
'-',
SUBSTR('03.09.13', 4, 2),
'-',
SUBSTR('03.09.13', 1, 2))

小提琴demo

有关您可以在相应的manual page中阅读的格式的更多信息。 提示:如果这是关于非日期时间字段的转换值 - 请更好地使用DATE / DATETIME数据类型。但是,通过字符串函数操作日期是一个坏主意。上面有一个很好的技巧STR_TO_DATE(不会重复该代码,更新以更好地适应)

答案 2 :(得分:1)

使用内部格式存储日期。您可以使用函数date_format()将其转换为使用各种格式的字符串。特别是你的:

select date_format(`date`, '%Y-%m-%d')