13

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

例如,03.09.13 -> 2013-09-03

4

3 回答 3

44

由于您的输入是表单中的字符串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(小写的“y”)STR_TO_DATE%Y(大写的“Y”)DATE_FORMAT。小写的版本是两位数的年份,大写的版本是四位数的年份。

于 2013-09-03T16:35:03.253 回答
4

利用

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

小提琴演示

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

于 2013-09-03T16:24:57.720 回答
1

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

select date_format(`date`, '%Y-%m-%d')
于 2013-09-03T16:25:12.183 回答