簡體   English   中英

sql 日期在月份時間跨度

[英]sql Date in month time span

我的表中有條目,例如

uid / start / end / value

我現在想 select 位於特定月份的所有條目。 因此,如果用戶選擇“六月”,我希望獲得所有 Entries,而不是 6 月可用的條目。 開始和結束保存為時間戳(無法更改)。 我發現了類似的東西:

WHERE month(start)=5

這確實有效,但不幸的是它只給了我從六月開始的條目。 我當然可以在結尾添加相同的內容,但是如果條目從 5 月開始並在 7 月結束,這仍然無濟於事。 我當然可以計算時間戳並直接比較,但我想 select 任何一年的六月 - 而不僅僅是一個特定的。 我在想類似的東西:

WHERE month(start) <= 5 && month(end) >= 5

這可以很好地處理時間戳,但顯然這對年假有問題。

有沒有一個很好的解決方案來做到這一點,而無需計算接下來幾年的所有時間戳並創建一個病態的大查詢?

好的,我想通了:

WHERE month(start)=5
OR month(end)=5
OR ( month(start)<=5 AND month(end) >= 5)
OR ( month(start)<=5 AND year(start)<year(end))
OR ( month(end)>=5 AND year(start)<year(end))

我認為這是正確的並且工作正常。

看起來它應該可以工作,但它很復雜,我很確定使用 function 月份意味着你不會遇到任何索引。

您也可以將其改寫為:

where  start <= 1 Jun 2011 
and    end >= 1 Jul 2011

暫無
暫無

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

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