在BETWEEN
文档描述(http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_between)中,我注意到一个我无法完全理解的奇怪表达:
为了在将 BETWEEN 与日期或时间值一起使用时获得最佳结果,请使用 CAST() 将值显式转换为所需的数据类型。示例:如果将 DATETIME 与两个 DATE 值进行比较,请将 DATE 值转换为 DATETIME 值。如果在与 DATE 的比较中使用字符串常量(例如 '2001-1-1'),请将字符串转换为 DATE。
所以我有以下问题:
任何人都可以提供一个真正必要的例子(并解释)以及何时
cast
会显着改变结果或性能。假设我们使用 mysql 定义的许多日期文字之一(http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html)。为简单起见,让它采用YYYY-MM-DD
('2013-07-26'
) 格式(带有您喜欢的任何日期)谁能澄清“最佳结果”是什么意思?结果要么是预期的,要么不是预期的——在这种情况下,什么是“最好的”?
PS:目标mysql版本是最新的5.5可用和更新。
PPS:说清楚:
- 问题假设我们使用日期时间/日期兼容的列,而不是 varchars 等
- 问题是关于扩大类型,而不是关于缩小