簡體   English   中英

通過比較兩個日期來排序事件數據的 SQL

[英]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),那么我想通過這個順序獲取數據——

  1. 活動 3
  2. 活動一
  3. 活動 4
  4. 活動 2

在事件 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM