SQL Select - 复杂查询中的日期比较

SQL Select - Date Comparing In Complex Query

我想获取日期最接近当前时间的所有行。 为此,我首先从所有行中获取第一个最接近当前日期的日期,然后获取日期与该最接近日期相同的所有行。 希望这是有道理的..

就是这样:

SELECT * 
  FROM Events 
 WHERE StartDate = '(SELECT StartDate 
                       FROM Events 
                      WHERE StartDate >= CURDATE() 
                      ORDER 
                         BY StartDate DESC 
                      LIMIT 1)';

无论如何,查询不起作用。我知道子查询确实有效:

SELECT * FROM Events WHERE StartDate = SELECT StartDate FROM Events WHERE StartDate >= CURDATE() ORDER BY StartDate DESC LIMIT 1

但将它们组合在一起时,不会运行。 我怀疑这可能是子查询结果的格式问题,我尝试使用 sql 函数对其进行格式化,但也没有用。

我也没有访问调试错误的权限,所以我看不出到底出了什么问题。

你能帮帮忙吗? 非常感谢!

您的子查询是一个字符串。删除引号。

您不应该通过 DESC 来寻找最近的。您需要升序:

SELECT * FROM Events WHERE StartDate = (
    SELECT StartDate FROM Events WHERE StartDate >= CURDATE()
    ORDER BY StartDate LIMIT 1
)

或者您可以:

SELECT * FROM Events WHERE StartDate = (
    SELECT MIN(StartDate) FROM Events WHERE StartDate >= CURDATE()
)