会計年度が 7 月 1 日から 6 月 30 日までとします。
週番号を計算する必要があります。したがって、SQL Server 2005 では。
提案してください!
どうもありがとう!
会計年度が 7 月 1 日から 6 月 30 日までとします。
週番号を計算する必要があります。したがって、SQL Server 2005 では。
提案してください!
どうもありがとう!
これを試して、自分のニーズに合わせて変数@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
-------------------------------------------
会計年度の第 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
。
try this
select DATEPART(week,getdate())-DATEPART(week,'07-01-2012')
To get the week number starting from July 1st 2012