例如,以下查询可以正常工作:
SELECT * FROM quotes WHERE expires_at <= '2010-10-15 10:00:00';
但这显然是在执行“字符串”比较-我想知道MySQL是否内置了专门用于“日期时间”比较的函数。
…这显然是在进行“字符串”比较
否-如果日期/时间格式与支持的格式匹配,则MySQL将根据要比较的列执行隐式转换,以将该值转换为DATETIME。同样的事情发生在:
WHERE int_column = '1'
…的字符串值“ 1”被转换为INTeger,因为int_column的数据类型为INT,而不是CHAR / VARCHAR / TEXT。
int_column
如果要将字符串显式转换为DATETIME,则STR_TO_DATE函数将是最佳选择:
WHERE expires_at <= STR_TO_DATE('2010-10-15 10:00:00', '%Y-%m-%d %H:%i:%s')