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

时间:2015-03-15 22:47:46

标签: mysql sql date select

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

就是这样:

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函数对其进行格式化,但这也不起作用。

我也无法访问调试错误,所以我无法真正看出错误。

你能尝试一下吗? 非常感谢!

2 个答案:

答案 0 :(得分:2)

您不应该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()
)

答案 1 :(得分:0)

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