1

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

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

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

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

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

任何帮助深表感谢 :)

4

3 回答 3

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;
于 2013-05-10T17:57:34.493 回答
0

就像是 :

SELECT   id, date, ....
FROM     tbl
WHERE    date <= [your date YYYY-MM-DD HH:MM:SS]
ORDER BY date DESC
LIMIT 1
于 2013-05-10T17:52:35.447 回答
0
SELECT *
FROM `table`
ORDER BY ABS(DATEDIFF(`date`, (DATE_SUB(NOW(), INTERVAL X DAY)))) ASC
LIMIT 1
于 2013-05-10T17:59:20.933 回答