MySQL SELECT WHERE DATE大约是X天前

时间:2013-05-10 17:49:19

标签: mysql

我有一个包含日期列的表。

表数据是以不规则的间隔通过cron作业插入的,而不是每天插入的。

我想只选择最接近X天前的行。

因此,例如,如果它是6月30日并且没有6月25日的参赛作品,我希望它能从6月26日或24日获取参赛作品(以最新和最接近5天前为准),如果没有26日或24日的参赛作品,然后寻找第27或第23等...

日期存储为YYYY-MM-DD HH:MM:SS。

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:1)

假设TIMESTAMP列为insertion_ts?绑定到您想要的DATE或TIMESTAMP:

   SELECT *
    FROM tbl
ORDER BY 
         -- We want the closest insertion_ts to our target date ...
         ABS(TIMESTAMPDIFF(SECOND, ?, insertion_ts)) ASC,
         -- ... and will favor the more recent in the unlikely event of a tie
         TIMESTAMPDIFF(SECOND, ?, insertion_ts) DESC
   LIMIT 1;

答案 1 :(得分:0)

类似的东西:

SELECT   id, date, ....
FROM     tbl
WHERE    date <= [your date YYYY-MM-DD HH:MM:SS]
ORDER BY date DESC
LIMIT 1

答案 2 :(得分:0)

SELECT *
FROM `table`
ORDER BY ABS(DATEDIFF(`date`, (DATE_SUB(NOW(), INTERVAL X DAY)))) ASC
LIMIT 1