我有一个包含日期列的表。
表数据是以不规则的间隔通过cron作业插入的,而不是每天插入的。
我想只选择最接近X天前的行。
因此,例如,如果它是6月30日并且没有6月25日的参赛作品,我希望它能从6月26日或24日获取参赛作品(以最新和最接近5天前为准),如果没有26日或24日的参赛作品,然后寻找第27或第23等...
日期存储为YYYY-MM-DD HH:MM:SS。
非常感谢任何帮助:)
答案 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