当我尝试将字符串转换为MYSQL中的日期时,得到的结果很奇怪。
SELECT
'2017-06-20' d
,CAST('2017-06-20' as DATE) d1
,DATE_FORMAT('2017-06-20', '%Y-%m%-%d') d2
,STR_TO_DATE('2017-06-20', '%Y-%m-%d') d3
,DATE('2017-06-20') d4
在我的计算机上,d2是唯一正确的日期,即它生成2017-06-20
。其余的d1,d3和d4生成06/19/2017
。为什么? STR_TO_DATE
答案 0 :(得分:1)
您对数据类型感到困惑。 MySQL具有内置的数据类型。它将'YYYY-MM-DD'
识别为字符串。
当表达式的结果是字符串时,将其按原样放入结果集中。
当结果是日期/时间时,将根据您的本地设置显示它。
因此,DATE_FORMAT()
会将第一个参数解释为日期并将其转换为字符串。那就是你得到的。
另一方面,STR_TO_DATE()
可以实现其名称所暗示的功能。它将第一个参数(字符串)转换为日期。然后会根据您的本地设置进行显示。