我有一个包含日期列的表。
表数据通过 cron 作业以不规则的时间间隔插入,而不是每天插入。
我只想选择最接近 X 天前的行。
因此,例如,如果它是 6 月 30 日并且 6 月 25 日没有条目,我希望它从 6 月 26 日或 24 日(以最新且最接近 5 天前的时间为准)获取条目,如果没有条目26 日或 24 日然后寻找 27 日或 23 日,等等...
日期存储为 YYYY-MM-DD HH:MM:SS。
任何帮助深表感谢 :)
我有一个包含日期列的表。
表数据通过 cron 作业以不规则的时间间隔插入,而不是每天插入。
我只想选择最接近 X 天前的行。
因此,例如,如果它是 6 月 30 日并且 6 月 25 日没有条目,我希望它从 6 月 26 日或 24 日(以最新且最接近 5 天前的时间为准)获取条目,如果没有条目26 日或 24 日然后寻找 27 日或 23 日,等等...
日期存储为 YYYY-MM-DD HH:MM:SS。
任何帮助深表感谢 :)
假设 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;
就像是 :
SELECT id, date, ....
FROM tbl
WHERE date <= [your date YYYY-MM-DD HH:MM:SS]
ORDER BY date DESC
LIMIT 1
SELECT *
FROM `table`
ORDER BY ABS(DATEDIFF(`date`, (DATE_SUB(NOW(), INTERVAL X DAY)))) ASC
LIMIT 1