日期文字的隐式转换(不是日期时间文字)

时间:2016-03-16 23:13:48

标签: mysql date

此查询何时

select *
from payments
where payment_date between '2013-06-01' and '2013-09-01';

产生不同的结果
select *
from payments
where payment_date between DATE('2013-06-01') and DATE('2013-09-01');

其中payment_date是日期(不是日期时间)?

更新 我应该提一下,这不是一个假设的问题,而是我目前的工作项目中的问题。代码中有几个地方需要重新编写,但如果没有必要,我想避免进行更改。

同样很容易用特定的数据集显示它们是相同的,但如果存在差异,我就无法找到差异。如果它们相同,我想参考手册。当我搜索手册的相关部分时,我发现它含糊不清。如果它们不同,那么一个例子就足够了。谢谢你的帮助。

manual州:

  

当运算符与不同类型的操作数一起使用时,请键入   发生转换以使操作数兼容。一些转换   隐含地发生。

并特别评论DATETIME字段:

  

如果其中一个参数是TIMESTAMP或DATETIME列,那么   其他参数是常量,常量转换为时间戳   在进行比较之前。这样做是为了更友好的ODBC。请注意,这不是针对IN()的参数!为安全起见,在进行比较时始终使用完整的日期时间,日期或时间字符串。例如,要在将BETWEEN与日期或时间值一起使用时获得最佳结果,请使用CAST()将值显式转换为所需的数据类型。

隐式转换是否也适用于DATE字符串?建议是施展,但我想在上面的查询中知道什么时候可以得到不同的结果。

0 个答案:

没有答案