2015-11-23 64 views

回答

0

如果索引(性能)不關心那麼它是一個簡單的表達,如果你的一週與SQL Server安裝程序一致:

where datediff(week, getdate(), [Date]) between 0 and 1 

下面的代碼片段是與兩個日期,日期時間中的另一種選擇。可以使其適用於任何@@datefirst設置,但我只是假設該設置與您希望報告的周的開始時間相符。

where 
     [Date] >= dateadd(day, 1 - datepart(weekday, getdate()), cast(getdate() as date)) 
    and [Date] < dateadd(day, 15 - datepart(weekday, getdate()), cast(getdate() as date)) 
+0

這不會顯示下週的數據,我嘗試更改1到2和3,但仍然不能 – humudu

+0

我不小心翻了辯論。再試一次。 – shawnt00

+0

沒問題,除了像其他建議一樣,它不會在下週的星期日返回任務,直到星期六,我想知道爲什麼 – humudu

0

下應該給你你想要的東西(假設星期一是一週的第一天,那是數據庫管理系統的SQL Server): -

select * 
from Tasks 
where [Date] 
between 
dateadd(dd,-(datepart(dw,[Date])-2),[Date]) --Monday of this week 
and 
dateadd(dd,13,dateadd(dd,-(datepart(dw,[Date])-2),[Date])) --Sunday of next week 
+0

謝謝,我會盡快嘗試!它是SQL Server – humudu

+0

我不認爲你的表達會在星期天工作。當你採取否定的時候,你真的想要加法逆模7。 – shawnt00

+0

你是對的,它不會選擇下週星期日。由於我缺乏理解,我嘗試將13到14改變,但沒有做到,那麼代碼應該怎麼看呢? – humudu

相關問題