我想在MySQL查询中创建日期间隔。日期是从HTML表单动态提取的,我想在固定日期之后2天之间搜索某些内容。我已经做了一个例子,但它运作不佳。
SELECT * FROM `sessions` WHERE `start_date` = '2014-05-12'
or `start_date` between DATE_SUB(start_date, INTERVAL 1 DAY)
and DATE_ADD(start_date, INTERVAL 1 DAY)
还有其他命题吗?
答案 0 :(得分:1)
如果每次此查询产生sessions
表中的所有行时,我都没有错。我们来看一下查询的这个特定部分,
start_date between DATE_SUB(start_date, INTERVAL 1 DAY)
and DATE_ADD(start_date, INTERVAL 1 DAY)
,
因此,如果行的start_date值为22-07-2014,则查询转换为
start_date between 21-07-2014 and 23-07-2014)
所以每一行都满足条件,因为每个日期x都在x - 1天和x + 1天之间。
因此,如果要执行查询以查找特定间隔之间的日期,请尝试
start_date between DATE_SUB('$start_date', INTERVAL 1 DAY)
and DATE_ADD('$start_date', INTERVAL 1 DAY)
代替。请注意,'$start_date'
是一个php变量,它是您将行与。