gpt4 book ai didi

mysql - 查询以显示第一个 future 事件和之后显示当前事件的时间事件

转载 作者:可可西里 更新时间:2023-11-01 08:35:55 25 4
gpt4 key购买 nike

我有一个存储事件的表,它有 2 个日期字段。一个用于事件的开始日期 (start_date),另一个用于结束日期 (end_date)。有些事件没有定义 end_date 或 end_date='1970-01-01'。

我使用以下 mysql 查询来检索当前和 future 的事件。

SELECT * 
FROM events
WHERE start_time >= CURDATE()
OR (start_time <= CURDATE() AND end_time>=CURDATE())
ORDER BY events.start_time;

我需要的是一个查询,它返回相同的结果,但以不同的方式并根据以下方式排序:

  • 事件分为两组:当前事件和 future 事件。当前事件被视为在实际日期前一天(“昨天”)开始但仍未结束的所有事件。

  • 结果将首先显示 future 事件,按 start_time 升序排列,然后显示当前事件,按 start_time 升序排列。

谢谢

最佳答案

SELECT *,
DATEDIFF(start_time, CURDATE()) AS diff
FROM events
WHERE start_time >= CURDATE()
OR ( start_time <= CURDATE()
AND end_time >= CURDATE() )
ORDER BY CASE
WHEN diff > 0 THEN 0
ELSE 1
end,
diff ASC;

关于mysql - 查询以显示第一个 future 事件和之后显示当前事件的时间事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12189228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com