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()
)
我想获取日期最接近当前时间的所有行。 为此,我首先从所有行中获取第一个最接近当前日期的日期,然后获取日期与该最接近日期相同的所有行。 希望这是有道理的..
就是这样:
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()
)