[英]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.