我说'我从表中选择了具有最大日期值的数据:
SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name
它工作正常,它选择具有“最新”日期值的数据。
我想知道在MySQL中是否有查询列出那些具有下一个降序日期的数据。 例如,在我的第一个选择中,我选择了具有MIN日期值的行,如下所示:2012-08-27 10:15:00 我希望用另一个查询来选择那些日期值的数据是最接近的下一个值,如下所示:2012-08-28 11:45:00
所以有其他行具有更大或更低的日期值,但我不想选择它们。只有最接近的,从我现在的。
答案 0 :(得分:0)
如果你有一个日期时间的值你想要找到的最接近的下一个元素(我们将它命名为 comparison_date ),你可以尝试这样的事情:
SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name > comparison_date ORDER BY column_name)
这将返回晚于该日期的所有日期时间值。如果要将其限制为单个结果,则应使用:
SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name > comparison_date ORDER BY column_name) LIMIT 1
或者,如果您想要从当前时间开始的下一个最接近的日期时间,您可以将 comparison_date 替换为 NOW(),这是一个MySQL函数。然后,你可以尝试这样的事情:
SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name > NOW() ORDER BY column_name)
为了找到下一个较低的日期时间(或上一个日期时间,但我们称之为),您应该使用:
SELECT * FROM table_name WHERE column_name IN (SELECT MIN(column_name) FROM table_name WHERE column_name < comparison_date ORDER BY column_name DESC) LIMIT 1