将字符串转换为日期一天后关闭

时间:2019-08-09 17:21:20

标签: mysql sql date

当我尝试将字符串转换为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

让我特别困惑

1 个答案:

答案 0 :(得分:1)

您对数据类型感到困惑。 MySQL具有内置的数据类型。它将'YYYY-MM-DD'识别为字符串。

当表达式的结果是字符串时,将其按原样放入结果集中。

当结果是日期/时间时,将根据您的本地设置显示它。

因此,DATE_FORMAT()会将第一个参数解释为日期并将其转换为字符串。那就是你得到的。

另一方面,STR_TO_DATE()可以实现其名称所暗示的功能。它将第一个参数(字符串)转换为日期。然后会根据您的本地设置进行显示。