在SQL中获取上一个星期五

在SQL中获取上一个星期五,sql,sql-server,tsql,datepart,Sql,Sql Server,Tsql,Datepart,如何在SQL Server中获取上一个星期五 以下是我目前掌握的代码: select (7 -datePart(dw, getdate()+3)) +1 像这样使用mod: declare @date datetime = getdate() declare @dow int = datepart(dw,@date) declare @mod int = @dow % 7 +1 select cast(dateadd(d,-@mod ,@date) as date) 如果你的一周从周日开始,

如何在SQL Server中获取上一个星期五

以下是我目前掌握的代码:

select (7 -datePart(dw, getdate()+3)) +1
像这样使用mod:

declare @date datetime = getdate()
declare @dow int = datepart(dw,@date)
declare @mod int = @dow % 7 +1
select cast(dateadd(d,-@mod ,@date) as date)

如果你的一周从周日开始,那么这里有一条单行线:

SELECT DATEADD(WEEK
              ,DATEDIFF(WEEK, '1900-01-05', DATEADD(DAY, 6 - DATEPART(DAY, GETDATE()) - 1, GETDATE()))
              ,'1900-01-05') AS [Last Friday]
查询统计从1900-01-05(星期五)到今天的天数减去1周。将此周数添加到1900-01-05,以获得前一周的星期五。

试试这个 选择convert(varchar(10),DATEADD(DD,-1-DATEPART(DW,convert(DATETIME,FLOOR,GETDATE()))) ),转换(DATETIME,FLOOR(转换(FLOAT,GETDATE())),101)
它将为您提供每周的前一个星期五

不是每个星期五都是一周的最后一个星期五吗?您是指一个月的最后一个星期五吗?请给出几个示例日期以及您希望在任何给定时间点的输出。。我想得到最后一个星期五选择什么@@DATEFIRST返回?提示:
(@@DATEFIRST+DatePart(weekday,SampleDate)-1)%7+1
将始终返回一个从
1
7
的整数,其中
1
对应于周日,而不管
DATEFIRST
语言
的设置如何。