MySQL - 基于日期加入

时间:2009-10-21 15:53:37

标签: sql mysql datetime join

是否可以根据相同的日期加入两个表,而不是考虑时间因素?

类似的东西:

  

... FROM约会LEFT JOIN销售ON   appointmentments.date = sales.date ...

唯一的问题是它是一个日期时间字段,所以我想确保它只查看日期并忽略时间

3 个答案:

答案 0 :(得分:9)

你可以这样做:

FROM appointments
LEFT JOIN sales ON DATE(appointments.date) = DATE(sales.date)

但我很确定它无法使用索引,所以会很慢。

您可能最好为每个表添加日期列。

答案 1 :(得分:0)

ON子句接受任意条件表达式,因此您可以在比较之前在双方执行日期规范化,但它应该代表显着的性能损失。

答案 2 :(得分:0)

是的,但您必须加入计算表达式,从日期时间列值中删除时间。这将使查询非SARGable(它不能使用索引),因此它将生成表扫描...

我不知道mysql中的语法从日期时间值中剥离时间,但不管它是什么,只需写一下

   FROM appointments a 
      LEFT JOIN sales s 
         ON StripTime(s.date) = StripTime(a.date)