SELECT 20170930 < TIMESTAMP(20170831);
# 1
SELECT 20170930 > TIMESTAMP(20170831);
# 0
SELECT '20170930' < TIMESTAMP(20170831);
# 0
SELECT '20170930' > TIMESTAMP(20170831);
# 1
文档:
如果其中一个参数是TIMESTAMP或DATETIME列,那么 其他参数是常量,常量转换为时间戳 在进行比较之前。这样做更多 ODBC友好。这不是针对IN()的参数。为了安全起见 这样做时总是使用完整的日期时间,日期或时间字符串 比较。例如,在使用BETWEEN时获得最佳效果 使用日期或时间值,使用CAST()显式转换值 到所需的数据类型。
看起来MySQL在比较之前没有将Number转换为Timestamp。我误解了吗?