首页 > 解决方案 > 计算周数 SQL Server

问题描述

我有一个查询,我需要根据 01.07.YEAR 发生的年度财政开始计算周数

我遇到的问题是,当它进入日历年的 30 天时,我没有得到正确的结果,所以我需要修改我的脚本。无论我在哪个月份,我都想要一个返回正确周数的查询。

我有一个日历表;我在当前日期加上 18 个月,这给了我这个时期,所以我试着对一周做同样的事情,但我绕着圈子转。

下面是我正在使用的代码:

SET DATEFIRST 1;
SELECT
  [date],
  DATEPART(wk, DATEADD(MONTH, 18, DATEADD(dd, -2, [date]))) 'FWeek',
  LEFT(CONVERT(varchar, DATEADD(MONTH, 18, [date]), 112), 6) AS 'Period',
  DATENAME(dw, [date]) AS 'Day'
FROM [dbo].[DP_PERIOD_DATES]
WHERE [date] >= '01/11/2018'
AND [date] < '04-01-2019'
ORDER BY [date] DESC

标签: sql-server-2008

解决方案


SET FWEEK = DATENAME(yy, (DATEADD(month, 18, [date]))) + RIGHT('00'+DATENAME(dy,(datepart(DAYOFYEAR,DATEDIFF(DY,0,[date])/7*7 +547)+5)/7),2) , 句点 = LEFT(CONVERT(varchar, DATEADD(month, 18, [date]),112),6)

感谢保罗的帮助;试图将别人的逻辑应用于约会真的很不容易。我使用上面的代码让它工作,以防将来有人在寻找相同类型的答案


推荐阅读