为什么以下情况有效? MySQL是否将多个破折号'---转换为单个'-'破折号。我试图为此找到一个解释,但找不到任何东西。
WHERE DATE(login_at) = '2019---04---30'
有人可以向我解释这是如何工作的吗?
我正在使用MySQL版本:5.7.18
答案 0 :(得分:2)
MySQL通过自动解释各种定界符并将其转换为正确的date [time]格式,提供了灵活性。在documentation中有很好的解释:
MySQL允许在指定为字符串的值中使用“松弛”格式, 任何标点符号都可以用作之间的分隔符 日期部分或时间部分。在某些情况下,此语法可能具有欺骗性。 例如,“ 10:11:12”之类的值可能看起来像一个时间值 由于:,但如果使用,则解释为年份'2010-11-12' 在日期上下文中。值'10:45:15'转换为'0000-00-00' 因为“ 45”不是有效月份。
在日期和时间部分与 小数秒部分是小数点。
因此,在您的情况下,MySQL将分隔符视为---
,因此隐式转换为Y-m-d
格式。
但是,使用标准的 Y-m-d h:i:s 格式表示日期/日期时间值总是更好且安全。