我在周末日期根据指定日期添加到列中。周末日期应该是下一个星期日,除非日期是星期日,在这种情况下应该使用该日期。
Declare @DateValue DateTime = '6/12/2016' --A Sunday
select DATEADD (dd, -1 * DatePart (DW, @DateValue) + 8, @DateValue)
此查询返回2016-06-19,即下周日,我想返回2016-06-12。
答案 0 :(得分:3)
这个怎么样
select DATEADD (dd, iif(DatePart (DW, @DateValue)=1,0,-1 * DatePart (DW, @DateValue) + 8), @DateValue)
如果您没有bjones
建议的SQL 2012+select DATEADD (dd, case when DatePart (DW, @DateValue)=1 then 0 else -1 * DatePart (DW, @DateValue) + 8 end, @DateValue)
答案 1 :(得分:1)
我强烈建议您创建一个Calendar表。虽然John Cappelletti会工作,但你会发现加入dbo.Calendar会更容易使用并提供更好的性能。
为什么你只需要一个日期表[视频]:https://www.brentozar.com/archive/2014/12/simply-must-date-table-video/