一尘不染

mysql datetime比较

sql

例如,以下查询可以正常工作:

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

但这显然是在执行“字符串”比较-我想知道MySQL是否内置了专门用于“日期时间”比较的函数。


阅读 290

收藏
2021-03-17

共1个答案

一尘不染

…这显然是在进行“字符串”比较

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

WHERE int_column = '1'

…的字符串值“ 1”被转换为INTeger,因为int_column的数据类型为INT,而不是CHAR / VARCHAR / TEXT。

如果要将字符串显式转换为DATETIME,则STR_TO_DATE函数将是最佳选择:

WHERE expires_at <= STR_TO_DATE('2010-10-15 10:00:00', '%Y-%m-%d %H:%i:%s')
2021-03-17