16

SQL Server のビューの日付フィールドからどのように会計年度を計算しますか?

4

19 に答える 19

25

アプリケーションの会計年度に基づいてユーザー定義関数を使用することをお勧めします。

CREATE FUNCTION dbo.fnc_FiscalYear(
    @AsOf           DATETIME
)
RETURNS INT
AS
BEGIN

    DECLARE @Answer     INT

    -- You define what you want here (September being your changeover month)
    IF ( MONTH(@AsOf) < 9 )
        SET @Answer = YEAR(@AsOf) - 1
    ELSE
        SET @Answer = YEAR(@AsOf)


    RETURN @Answer

END



GO

次のように使用します。

SELECT dbo.fnc_FiscalYear('9/1/2009')


SELECT dbo.fnc_FiscalYear('8/31/2009')
于 2009-11-20T17:24:54.623 に答える
14
CASE WHEN MONTH(@Date) > 10 THEN YEAR(@Date) + 1 ELSE YEAR(@Date) END
于 2009-11-20T17:24:39.830 に答える
12

オーストラリアの会計年度の開始日コードは次のとおりです

 select DATEADD(dd,0, DATEDIFF(dd,0, DATEADD( mm,
 -(((12 + DATEPART(m, getDate())) - 7)%12), getDate() ) 
 - datePart(d,DATEADD( mm, -(((12 + DATEPART(m, getDate())) - 7)%12),getDate() ))+1 ) )

のように返します'2012-07-01 00:00:00.000'

于 2012-07-31T08:10:06.840 に答える
8
CASE 
  WHEN MONTH(Date) > 6 
   THEN YEAR(Date) + 1
   ELSE YEAR(Date)
  END AS [FISCAL YEAR]

この場合、会計年度は7/1から始まります。これは、世の中で最も簡単な解決策です。

于 2012-02-09T18:28:10.353 に答える
2

この場合の最も簡単な式: YEAR(DATEADD(month, 3, Date))

連邦会計年度

会計年度は、連邦政府の会計期間です。10 月 1 日に始まり、翌年の 9 月 30 日に終わります。各会計年度は、それが終了する暦年によって識別され、一般に「FY」と呼ばれます。たとえば、2003 会計年度は 2002 年 10 月 1 日に始まり、2003 年 9 月 30 日に終了します。その意図は、議会が歳出法案を処理するためにより多くの時間を与えることでした。特に、継続的な決議を回避するためです。

これは、米国以外の国や地域には当てはまらない場合がありますが、必要に応じて数字の 3 を置き換える必要があります。

于 2014-01-22T22:02:27.950 に答える
2

ChrisF と Conficker によって投稿された回答を拡張しました。

DECLARE @FFYStartMonth INT = 10 --The first month of the FFY
DECLARE @EntryDate DATETIME = '4/1/2015' --The date of the data
DECLARE @StartDate DATETIME

DECLARE @EndDate DATETIME

SET @StartDate = DATEADD(dd, 0,
    DATEDIFF(dd, 0,
        DATEADD(mm, - (((12 + DATEPART(m, @EntryDate)) - @FFYStartMonth)%12), @EntryDate) -
datePart(d,DATEADD(mm, - (((12 + DATEPART(m, @EntryDate)) - @FFYStartMonth )%12),
    @EntryDate )) + 1 ))  

SET @EndDate = DATEADD(SS, -1, DATEADD(mm, 12, @StartDate))

SELECT @StartDate, @EndDate
于 2015-11-20T15:39:49.760 に答える
1

与えられ@FiscalYearStartMonthたのは会計年度の開始月(数値)であり@Date、問​​題の日付です。次のようにします。

SELECT 
  CASE 
      WHEN @FiscalYearStartMonth = 1 OR @FiscalYearStartMonth > MONTH(@Date) 
      THEN YEAR(@Date) 
      ELSE YEAR(@Date) + 1 
  END AS FiscalYear

これを関数で抽象化するか、派生ビューの列として使用できます

于 2012-05-09T18:57:06.363 に答える
1

Brett Veenstra によるマークされた回答が間違っていることに気付きました。FY は次のように計算されるべきではありませんか?:

CREATE FUNCTION dbo.fnc_FiscalYear(
    @AsOf           DATETIME
)
RETURNS INT
AS
BEGIN
    DECLARE @Answer     INT
    IF ( MONTH(@AsOf) < 9 )
        SET @Answer = YEAR(@AsOf) 
    ELSE
        SET @Answer = YEAR(@AsOf) + 1
    RETURN @Answer
END;
于 2014-08-27T23:06:31.113 に答える
1

普遍的な会計カレンダーがないため、できないと思います。会計年度は企業や国によって異なります。

補遺: あなたがする必要があるのは、会計開始日と該当する各年度の会計終了日で構成される個別の DB テーブルを用意することです。そのテーブルのデータを使用して、特定の日付が与えられた会計年度を計算します。

于 2009-11-20T17:22:16.737 に答える
1

これを行うには、複数のフィールドが必要になります...

会計年度の定義は会社によって異なるため、確認する必要があります。

于 2009-11-20T17:23:52.223 に答える
0

これは会計年度をFYyyyyとして返す私のバージョンです - 会計年度は7/1から始まります

つまり、2015 年 6 月 1 日 -> 1415 年度、2015 年 7 月 1 日 -> 1516 年度

文字列関数の方が優れている可能性があります...

        CREATE FUNCTION [dbo].[FY](@DATE DATETIME)
        RETURNS char(6)
        AS
        BEGIN
            DECLARE @Answer     char(6)
            SET @Answer =    
            CASE WHEN MONTH(@DATE) < 7 
                 THEN 'FY' + RIGHT(CAST(YEAR(@DATE) - 1 AS VARCHAR(11)), 2) + RIGHT(CAST(YEAR(@DATE) AS VARCHAR(11)), 2) 
                 ELSE 'FY' + RIGHT(CAST(YEAR(@DATE) AS VARCHAR(11)), 2) + RIGHT(CAST(YEAR(@DATE) + 1 AS VARCHAR(11)), 2) END
            RETURN @Answer
        END
于 2016-05-18T23:22:15.890 に答える
0

英国の動的コードは次のとおりです。

さまざまなニーズに基づいて回避できます。

DECLARE @StartDate DATETIME

DECLARE @EndDate DATETIME

SET @StartDate = DATEADD(dd, 0,
    DATEDIFF(dd, 0,
        DATEADD(mm, - (((12 + DATEPART(m, getDate())) - 4)%12), getDate()) -
    datePart(d,DATEADD(mm, - (((12 + DATEPART(m, getDate())) - 4)%12),
        getDate() )) + 1 ))  

SET @EndDate = DATEADD(SS, -1, DATEADD(mm, 12, @StartDate))

SELECT @StartDate, @EndDate
于 2012-02-23T16:28:14.593 に答える
-1

オーストラリア人にとってはもっと簡単です:)

(YEAR(DATEADD(Month,-((DATEPART(Month,[Date])+5) %12),[Date]))+) AS Financial_Year

于 2015-11-23T06:46:11.340 に答える
-1

簡単な方法 -

DECLARE @DATE DATETIME = '2016/07/1'
-- 会計開始 SELECT CONVERT(DATETIME, (CAST(YEAR(@DATE) - IIF(MONTH(@DATE) > 6, 0, 1) AS VARCHAR) + '- 7-1'))

-- 会計年度末 SELECT CONVERT(DATETIME, (CAST(YEAR(@DATE) + IIF(MONTH(@DATE) > 6, 1, 0) AS VARCHAR) + '-6-30'))

于 2016-04-01T10:06:51.190 に答える