0

假设我从具有最大日期值的表中选择了这些数据,如下所示:

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

所以还有其他日期值更大或更低的行,但我不想选择它们。从我目前的情况来看,只有最近的下一个。

4

1 回答 1

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 替换为 MySQL 函数NOW() 。然后,你可以尝试这样的事情:

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
于 2012-10-26T08:36:33.330 回答