繁体   English   中英

MySQL SELECT WHERE DATE大约是X天前

[英]MySQL SELECT WHERE DATE is approx X days ago

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

表格数据是通过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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM