我试图在sql Server 2008中获得最新的星期五.
我有这个.它将在星期一开始(星期一),然后减去3天到达星期五.
declare @recentFriday datetime = DATEADD(ww,DATEDIFF(dd,GETDATE()),0)-3
当这个星期运行时,它得到上周五的日期是正确的.但是当星期五(或星期六)运行时,它仍然是上周的日期,而不是当周的星期五.我要使用if / else条件,但我确定有一个更简单的方法.
解决方法
这适用于DATEFIRST的任何输入和任何设置:
dateadd(d,-((datepart(weekday,getdate()) + 1 + @@DATEFIRST) % 7),getdate())
它可以通过调整工作日值来实现,以便0 =星期五,模拟星期五作为一周的开始.然后减去平均值,如果非零,以获得最近的星期五.
编辑:更新为DATEFIRST的任何设置工作.