0

会計年度が 7 月 1 日から 6 月 30 日までとします。

週番号を計算する必要があります。したがって、SQL Server 2005 では。

提案してください!

どうもありがとう!

4

5 に答える 5

1

これを試して、自分のニーズに合わせて変数@dtを使用してください。

DECLARE @dt DATETIME = GETDATE()
SELECT WeekOfMonth = DATEPART(wk, @dt) - DATEPART(wk,DATEADD(m, DATEDIFF(M, 0, @dt), 0)) + 1

編集:質問を誤って理解したので、私の解決策は年ではなく月の週を返します。

@Demsの回答の一部を使用し、ここで私の変更を行うのは、一時テーブルで利用可能な日付と会計年度の開始に基づいて、WeekOfMonth、WeekOfYear、WeekOfFIscalYearの3つの列を出力する完全な動作テストです。しかし、会計年度の始まりは、特定の会社にとって常に同じだと思います。テスト用に異なる日付と年を追加しました。

DECLARE @TT TABLE (auxVal       INT,
                   auxdate      DATETIME,
                   fiscal_year  DATETIME
                )

INSERT @TT 
SELECT 100,'19120101 00:00:00','19120701' UNION ALL
SELECT 200,'18120615 00:00:00','18110701' UNION ALL
SELECT 100,'20121121 00:00:00','20120701' UNION ALL
SELECT 200,'20120101 00:00:00','20110701' UNION ALL
SELECT 100,'20150802 00:00:00','20140701' UNION ALL
SELECT 200,'20120330 00:00:00','20110701' UNION ALL
SELECT 322,'20110228 00:00:00','20100701'

SELECT DATEDIFF(week, DATEADD(MONTH, DATEDIFF(MONTH, 0, auxDate), 0), auxDate) + 1 WeekOfMonth,
       DATEPART( wk, auxDate) WeekOfYear,
       DATEDIFF(DAY, (DATEADD(YEAR, DATEDIFF(YEAR, fiscal_year, DATEADD(MONTH, -7, auxDate)), fiscal_year)), auxDate) / 7 + 1  WeekOfFiscalYear
  FROM @TT

結果:

WeekOfMonth   WeekOfYear   WeekOfFiscalYear
-------------------------------------------
      1            1             27
      3            25            51
      4            47            21
      1            1             27
      2            32            5
      5            13            40
      5            10            35
-------------------------------------------
于 2012-08-02T10:58:39.393 に答える
1

会計年度の第 1 週が常に 7 月 1 日から 7 月 7 日である場合...

DECLARE
  @inputDate    DATETIME,
  @fYearStart   DATETIME,
  @weekNumber   INT
SET
  @inputDate    = getDate()
SET
  @fYearStart   = DATEADD(year, DATEDIFF(year, '20000101', DATEADD(month, -7, @inputDate)), '20000701')
SET
  @weekNumber   = DATEDIFF(day, @fYearStart, @inputDate) / 7 + 1


決算週が常に日曜日から土曜日の場合...

DECLARE
  @inputDate    DATETIME,
  @fYearStart   DATETIME,
  @weekNumber   INT
SET
  @inputDate    = getDate()
SET
  @fYearStart   = DATEADD(year, DATEDIFF(year, '20000101', DATEADD(month, -7, @inputDate)), '20000701')
SET
  @weekNumber   = DATEDIFF(WEEK, @fYearStart, @inputDate)


これらのいずれかが の定義に適応できる必要がありますweek number

于 2012-08-02T10:54:11.377 に答える
-1
try this

    select DATEPART(week,getdate())-DATEPART(week,'07-01-2012')

To get the week number starting from July 1st 2012
于 2012-08-02T10:53:47.213 に答える