需要SQL代碼來獲取星期數FiscalYear - 日期表範圍一九七五年至2024年SQL代碼來獲得星期數FiscalYear
已經有weekno(WEEKOFYEAR)從4月1日CalendarYear 周的計數開始並於3月31日結束 -Week從週日開始到週六 - 在Fiscalyear結束時,周也結束
例如。 2016年4月1日周的1 2016年4月2日 - 本週1 2016年4月3日至2016年4月9日周的2 2016年4月10日至2016年4月16日周的3 ...等
需要SQL代碼來獲取星期數FiscalYear - 日期表範圍一九七五年至2024年SQL代碼來獲得星期數FiscalYear
已經有weekno(WEEKOFYEAR)從4月1日CalendarYear 周的計數開始並於3月31日結束 -Week從週日開始到週六 - 在Fiscalyear結束時,周也結束
例如。 2016年4月1日周的1 2016年4月2日 - 本週1 2016年4月3日至2016年4月9日周的2 2016年4月10日至2016年4月16日周的3 ...等
編寫一個查詢做到這一點,對我來說很複雜。我建議你通過使用表格(Choice1)或創建一個EXCEL文件(Choice2)來完成它。
Choice1:用4個字段[DateOfToday,weekNumber,FiscalYear]創建WeekCalendarForFiscalYear表。
在FiscalYear中,您處於財政年度(2016年,2017年,2018年等)。
你要想想這些索引字段。 !
/\:您還可以創建你的表是這樣的:WeekCalendarForFiscalYear有4場[WeekNumber,FiscalYear,開始日期,結束日期。 StartDate將對應於財年結束時的會計周開始和結束日期。
Choix2:創建在其中輸入數據無論是在Choix1一個Excel文件,或因爲它適合你。
希望這可以幫助。
假設DATEFIRST是7,我得到了這個功能 - 其實你可以默認DATEFIRST = 7只查詢的使用壽命 - 這似乎是根據1980年日曆
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
CREATE FUNCTION FiscalYearMonth
(
@DAT datetime
)
RETURNS int
AS
BEGIN
DECLARE @TAXY as int;
DECLARE @R as int;
SET @TAXY = YEAR(dateadd(month,-3,@dat));
DECLARE @TDAT as varchar(8)
SET @TDAT = CAST(@TAXY AS varchar(4)) + '0401';
SELECT @R = datediff(day, DATEADD(day , (8 - DATEPART(DW,@TDAT)) % 7,@TDAT), dateadd(day,14,@DAT))/7;
RETURN @R;
END
GO
例如工作
SET datefirst 7;
select dbo.FiscalYearMonth('19800413')
我強烈建議創建一個日期表來保存這些信息。 https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql-server/ –
的可能的複製[如何從迄今爲止獲得該月的週數在SQL Server 2008中](http:// stackoverflow。com/questions/13116222/how-to-get-month-the-month-from-date-in-sql-server-2008) –
@ mister - 這不是週數的重複,因爲那另一個問題似乎沒有提到財政年度,並且這個例子幾乎與她的例子不相符合 - 財政周48不在11月份 – Cato