我將週末日期添加到基於指定日期的列中。週末日期應該是下週日,除非日期是星期日,在這種情況下它應該使用該日期。週末日期退回問題
Declare @DateValue DateTime = '6/12/2016' --A Sunday
select DATEADD (dd, -1 * DatePart (DW, @DateValue) + 8, @DateValue)
此查詢返回以下星期日2016-06-19,我想返回2016-06-12。
我將週末日期添加到基於指定日期的列中。週末日期應該是下週日,除非日期是星期日,在這種情況下它應該使用該日期。週末日期退回問題
Declare @DateValue DateTime = '6/12/2016' --A Sunday
select DATEADD (dd, -1 * DatePart (DW, @DateValue) + 8, @DateValue)
此查詢返回以下星期日2016-06-19,我想返回2016-06-12。
這個怎麼樣
select DATEADD (dd, iif(DatePart (DW, @DateValue)=1,0,-1 * DatePart (DW, @DateValue) + 8), @DateValue)
如果沒有SQL做2012+由bjones
select DATEADD (dd, case when DatePart (DW, @DateValue)=1 then 0 else -1 * DatePart (DW, @DateValue) + 8 end, @DateValue)
的建議我強烈建議你創建一個日曆表。雖然John Cappelletti的工作,你會發現加入dbo.Calendar會更容易使用,並提供更好的性能。
爲什麼你就必須有一個日期表[視頻]:https://www.brentozar.com/archive/2014/12/simply-must-date-table-video/
你有任何鏈接到這種方法的例子? –
添加了教會我如何使用它們的視頻。 –
對於OP原來的陳述用法看起來似乎過度,但如果還有其他業務邏輯圍繞日期(以及個人經驗,通常有)進行,這實際上很有意義。 – user2366842
只要它> = SQL Server 2012的 – BJones
同意,然後進行簡單的case語句 –
@JohnCappelletti謝謝你,我是2012年之前待辦事項 –