【发布时间】:2010-12-08 18:38:57
【问题描述】:
是否可以基于同一日期连接两个表,而不考虑时间?
类似:
...FROM 约会 LEFT JOIN sales ON 约会.日期 = 销售.日期...
唯一的问题是它是一个日期时间字段,所以我想确保它只查看日期而忽略时间
【问题讨论】:
-
关于您的问题的相同讨论 - stackoverflow.com/q/48590120/4050261
是否可以基于同一日期连接两个表,而不考虑时间?
类似:
...FROM 约会 LEFT JOIN sales ON 约会.日期 = 销售.日期...
唯一的问题是它是一个日期时间字段,所以我想确保它只查看日期而忽略时间
【问题讨论】:
你可以这样做:
FROM appointments
LEFT JOIN sales ON DATE(appointments.date) = DATE(sales.date)
但我很确定它不能使用索引,所以会很慢。
最好为每个表添加一个日期列。
【讨论】:
ON 子句接受任意条件表达式,因此您可以在比较之前在双方执行日期规范化,但它应该代表显着的性能损失。
【讨论】:
是的,但您必须加入一个计算表达式,该表达式从日期时间列值中去除时间。这将使查询成为非 SARGable(它不能使用索引),因此它将生成表扫描...
我不知道 mysql 中从 datetime 值中剥离时间的语法,但不管是什么,只要写
FROM appointments a
LEFT JOIN sales s
ON StripTime(s.date) = StripTime(a.date)
【讨论】: