在mysql中选择未来日期的最早日期

ymdaylpp  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(442)

我有以下msql列结构。如何选择未来日期中最早的日期而忽略过去的日期。
开始日期

2018-07-01 -> past
2018-07-07 -> past
2018-07-14 -> future (SELECT THIS ONE ONLY, the earliest of the future ones)
2018-07-18 -> future
2018-07-22 -> future

请帮忙。我在挣扎。

txu3uszq

txu3uszq1#

这个答案的前一个版本是无效的,特别是在大表上。它没有使用任何索引。这里有一个更好的方法:

SELECT DATE(start_date)
FROM your_table_name
WHERE start_date >= CURRENT_DATE + INTERVAL 1 DAY
ORDER BY start_date ASC
LIMIT 1

这可以利用上的索引 start_date 列。
它使用短路 LIMIT 1 ,一旦找到结果。
以前的版本(不使用):
试试这个:

SELECT MIN(DATE(start_date)) 
FROM table 
WHERE DATE(start_date) > DATE(NOW())

函数提供当前日期。所以我们只搜索那些比当前日期还多的日期。
在搜索的日期中,我们使用min()函数获得最小(最早)日期。
函数的作用是:将日期/日期时间表达式(例如:result of now())中的日期部分提取为yyyy-mm-dd格式(例如: '2018-07-27' ).

相关问题