【发布时间】:2013-05-05 11:31:49
【问题描述】:
我有一个包含日期列的表格。
表格数据通过 cron 作业不定期插入,而不是每天插入。
我只想选择距离 X 天前最近的行。
因此,例如,如果它是 6 月 30 日并且没有 6 月 25 日的条目,我希望它从 6 月 26 日或 24 日(以最新且最接近 5 天前的时间为准)获取条目,如果没有26 日或 24 日的条目然后寻找 27 日或 23 日等...
日期存储为 YYYY-MM-DD HH:MM:SS。
非常感谢任何帮助:)
【问题讨论】:
-
你可以使用 between 语句
WHERE date BETWEEN x ... y -
@Matthew 在我收到反对在
DATE、DATETIME和TIMESTAMP列上使用BETWEEN的反馈之前发布的一个答案。我建议你阅读这篇文章:sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/… -
@Barranka 我在那篇文章中看到
between的唯一问题是作者不了解日期的工作原理。 -
@Matthew 考虑到作者的经验,值得考虑(不知何故,我认为作者确实了解他的东西)。无论如何,对于关键任务,仔细检查结果总是一个好主意。如果
datetime值包括小时、分钟和秒,则类似t between '2013-01-01' and '2013-01-05'的表达式将排除(严格)大于2013-01-05 00:00:00的每个t 值(例如:2013-01-05 00:00:01) ...这很可能不是我们想要的
标签: mysql