[英]SQL for Ordering event data by comparing to two dates
我想按當前月份對數據進行排序,以將其與兩個日期進行比較。
我還需要按當月訂購數據。 這意味着,如果事件開始日期或事件結束日期在當月,則這些事件需要顯示在頂部。
例如 - 在我的events
表中。
活動名稱 | event_start_date | event_end_date |
---|---|---|
活動一 | 2022-06-09 | 2022-06-11 |
活動 2 | 2022-07-08 | 2022-07-30 |
活動 3 | 2022-05-29 | 2022-06-15 |
活動 4 | 2022-06-15 | 2022-06-16 |
如果當前月份是六月(06),那么我想通過這個順序獲取數據——
在事件 3 開始日期是過去一個月,但結束日期是當月。 所以我想把它放在第一位。 我試過這個查詢
IF(MONTH(event_start_date) < MONTH(NOW()), MONTH(event_start_date) + 12, MONTH(event_start_date)), DAY(event_start_date)
所以在我的最后一個查詢中,我只比較了 event_start_date,但是哪些事件從上個月開始到當月結束,我還需要它們在頂部。
那么如何解決呢? 謝謝
似乎以下查詢適用於我的情況。
ORDER BY IF(
MONTH(IF(MONTH(event_start_date)=MONTH(NOW()), event_start_date, IF(MONTH(event_end_date)=MONTH(NOW()), event_end_date, event_start_date))) < MONTH(NOW()),
MONTH(IF(MONTH(event_start_date)=MONTH(NOW()), event_start_date, IF(MONTH(event_end_date)=MONTH(NOW()), event_end_date, event_start_date))) + 12,
MONTH(IF(MONTH(event_start_date)=MONTH(NOW()), event_start_date, IF(MONTH(event_end_date)=MONTH(NOW()), event_end_date, event_start_date)))
),
DAY(IF(MONTH(event_start_date)=MONTH(NOW()), event_start_date, IF(MONTH(event_end_date)=MONTH(NOW()), event_end_date, event_start_date)))
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.