在sql server中给定月份的最后一个星期五

Abh*_*ora 7 t-sql sql-server sql-date-functions

如何在T-SQL中获取本月最后一个星期五的日期?

我将把年份和月份作为参数传递,例如,201211.如果我通过'201211'作为参数,它应该返回'20121130'作为答案,因为它是11月的最后一个星期五的日期.

Cia*_*rán 11

1900年1月5日是星期五.这使用了基准日期并计算任何给定月份的最后一个星期五,但您必须在月份期间给它一个日期而不仅仅是月份本身.将此处替换为2012-12-01您当月的日期

SELECT DATEADD(DY,DATEDIFF(DY,'1900-01-05',DATEADD(MM,DATEDIFF(MM,0,'2012-12-01'),30))/7*7,'1900-01-05')
Run Code Online (Sandbox Code Playgroud)

您也可以通过替换1900-01-05WITH 1900-01-06等来使用它来获取上周六.