MySQL日期时间比较

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

例如,以下查询工作良好:

SELECT * 
  FROM quotes 
 WHERE expires_at <= '2010-10-15 10:00:00';

但这显然是在执行“String”比较--我想知道MySQL是否内置了一个函数,专门用于“datetime”比较。

提问于
用户回答回答于

...这显然是在执行“字符串”比较

否-如果日期/时间格式与受支持的格式匹配,MySQL将执行隐式转换,根据要比较的列将值转换为日期时间。同样的事情发生在:

WHERE int_column = '1'

将“1”的字符串值转换为整数,因为int_column其数据类型为int,而不是CHAR/VARCHAR/text。

WHERE expires_at <= STR_TO_DATE('2010-10-15 10:00:00', '%Y-%m-%d %H:%i:%s')
用户回答回答于

但这显然是在执行“字符串”比较。

没有。字符串将自动转换为日期时间值。

表达式计算中的类型转换。

当运算符与不同类型的操作数一起使用时,将发生类型转换以使操作数兼容。有些转换是隐式发生的。例如,MySQL根据需要自动将数字转换为字符串,反之亦然。

扫码关注云+社区