计算星期数SQL Server

时间:2018-12-18 20:08:26

标签: sql-server-2008

我有一个查询,需要根据每年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

2 个答案:

答案 0 :(得分:0)

尝试使用datediff从1/7 / x获得星期数。 额外的datediff用来获取第一年的值,并加上6来获取第七年的值。

SELECT [date],
DateDiff(wk, 
--JANUARY 7th of Current Year
DATEADD(yy, DATEDIFF(yy, 0, DATEADD(m,18,[date])), 0)+6
, DATEADD(m,18,[date]))
FROM [dbo].[DP_PERIOD_DATES]
WHERE [date] >= '01/11/2018'
AND [date] < '04-01-2019'
ORDER BY [date] DESC

答案 1 :(得分:0)

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)

感谢保罗的所有帮助;确实不容易,因为尝试将其他人的逻辑应用于日期。我可以使用上面的代码来工作,以防将来有人在寻找相同类型的答案