2016-11-14 77 views
0

需要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 ...等

+1

我強烈建議創建一個日期表來保存這些信息。 https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql-server/ –

+0

的可能的複製[如何從迄今爲止獲得該月的週數在SQL Server 2008中](http:// stackoverflow。com/questions/13116222/how-to-get-month-the-month-from-date-in-sql-server-2008) –

+0

@ mister - 這不是週數的重複,因爲那另一個問題似乎沒有提到財政年度,並且這個例子幾乎與她的例子不相符合 - 財政周48不在11月份 – Cato

回答

0

編寫一個查詢做到這一點,對我來說很複雜。我建議你通過使用表格(Choice1)或創建一個EXCEL文件(Choice2)來完成它。

Choice1:用4個字段[DateOfToday,weekNumber,FiscalYear]創建WeekCalendarForFiscalYear表。

  • 在DateOfToday中,您將當天的日期。
  • 在WeekNumber中,輸入會計週數。
  • 在FiscalYear中,您處於財政年度(2016年,2017年,2018年等)。

    你要想想這些索引字段。 !

    /\:您還可以創建你的表是這樣的:WeekCalendarForFiscalYear有4場[WeekNumber,FiscalYear,開始日期,結束日期。 StartDate將對應於財年結束時的會計周開始和結束日期。

Choix2:創建在其中輸入數據無論是在Choix1一個Excel文件,或因爲它適合你。

  • 該文件必須在物理上位於數據庫的服務器上。
  • 您可以通過OPENROWSET訪問該文件。您可以在網上找到很多可幫助您使用OPENROWSET的網站。

希望這可以幫助。

0

假設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')