回答

收藏

获取最近的星期五日期SQL

技术问答 技术问答 115 人阅读 | 0 人回复 | 2023-09-14

我正在尝试获取SQL Server 2008中的最新星期五。
- V1 w. _2 D- o) c) E我有这个。它获取一周的开始时间(星期一),然后减去3天即可得出星期五。+ r% a6 C9 W: l% A/ y
declare @recentFriday datetime =  DATEADD(ww, DATEDIFF(dd,0,GETDATE()), 0)-39 P9 R) ?9 z$ u: i# O
在一周中运行此命令时,它将获得上周五的正确日期。但是,在星期五(或星期六)运行时,它仍然是上周的日期,而不是当前星期的星期五。我将使用if /* k, X  u3 M! r
else条件,但是我敢肯定有一种更简单的方法。
; S; t/ D4 W& r- l' M4 M+ M                5 w' g% P/ M. [1 v2 R" f
解决方案:
  v/ s7 r. G" F( X/ V0 m2 {               
  _5 s, E* P% k6 b7 O5 l. P: V7 {; t7 O5 q- R
% ~) H7 S! a" \6 K$ X
                这适用于以下任何输入和任何设置DATEFIRST:. S( g/ E+ f7 ^1 C
dateadd(d, -((datepart(weekday, getdate()) + 1 + @@DATEFIRST) % 7), getdate())
2 Z8 h8 `- }6 R+ \3 L6 R; P7 K通过将工作日值调整为0 =星期五,将星期五模拟为一周的开始来工作。然后减去非零的工作日值以获取最近的星期五。
: t2 l3 i/ Z7 Y% L  c2 A* e编辑 :已更新,可用于的任何设置DATEFIRST。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则