簡體   English   中英

SQL當前和將來的日期

[英]SQL Current and Future Dates

我有一個事件表,並且找到了一個選擇所有當前事件和即將發生的事件(在接下來的14天內)的解決方案。

我只是想知道是否有比在WHERE語句中使用OR更好的解決方案。 這種解決方案使我感到自己像個cr腳的程序員。

SELECT
   eventID
  ,eventTitle
  ,eventStartDate
  ,eventFinishDate
FROM Events
WHERE eventStartDate <= GETDATE() AND eventFinishDate >= GETDATE()
OR eventStartDate >= GETDATE() AND DATEDIFF(DAY,GETDATE(),eventStartDate) <= 14
ORDER BY eventStartDate

非常感謝您的智慧! 非常感謝

假設eventStartDate <= eventFinishDate ,您可以說它必須從現在開始兩周前開始,到今天之后結束:

where   eventStartDate <= dateadd(week, 2, getdate())
        and getdate() <= eventFinishDate

您可能需要類似:

SELECT
   eventID
  ,eventTitle
  ,eventStartDate
  ,eventFinishDate
FROM Events
WHERE GETDATE() BETWEEN eventStartDate AND eventFinishDate
OR eventStartDate BETWEEN GETDATE() AND DATEADD(DAY, 14, GETDATE())
ORDER BY eventStartDate

順便說一句,在使用OR運算符使用括號正確指定所需的內容時,請務必小心。 因此,您的代碼示例可能會失敗。 如果得到錯誤的結果,則應嘗試:

SELECT
   eventID
  ,eventTitle
  ,eventStartDate
  ,eventFinishDate
FROM Events
WHERE (eventStartDate <= GETDATE() AND eventFinishDate >= GETDATE())
OR (eventStartDate >= GETDATE() AND DATEDIFF(DAY,GETDATE(),eventStartDate) <= 14)
ORDER BY eventStartDate

在我的代碼中,這不是必需的,因為它不是一個復雜的表達式,只有一個OR。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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