年の財務日を取得する方法、つまり関数に4月2日を渡す場合は、2を返します。会計年度は、毎年4月1日から開始します。年の金融日のSQL関数
答えて
会計カレンダーは組織固有のものであり、まれに変更される可能性があります。最も簡単な解決策は、会計カレンダーの概要を示す表を作成することです。だから、CTEを使ってこれを模倣することができますが、それをテーブルとして保存する方がいいです。
With FiscalCalendarStarts As
(
Select 1 As FiscalPeriod
, Cast('20120401' As DateTime) As StartDate
Union All
Select FiscalPeriod + 1
, Case
When Month(StartDate) = 12 Then DateAdd(m, Month(StartDate) - 12 + 1, StartDate)
Else DateAdd(m, 1, StartDate)
End
From FiscalCalendarStarts
Where FiscalPeriod < 12
)
, FiscalCalendar As
(
Select FiscalPeriod
, StartDate
, DateAdd(d, -1, DateAdd(m, 1, StartDate)) As EndDate
From FiscalCalendarStarts
)
Select *
From FiscalCalendar
Where @SomeDate Between StartDate And EndDate
編集
(私は上記の溶液中で提供されていませんでした認める)一日数を取得するには、トリックは、入力された日付に基づいて、実際の会計年度の開始日を決定することです。これを行うには、あなたの要求ごとに、私は
Create Function dbo.FiscalDay (@Input datetime)
Returns int
As
Begin
Declare @StartDayMonth char(4);
Set @StartDayMonth = '0401';
Return (
Select DateDiff(d, FYStartDate, @Input) + 1
From (
Select DateAdd(yyyy
, Case
When DatePart(dy, @Input) >= DatePart(dy, StartDate) Then 0
Else -1
End
, StartDate) As FYStartDate
From (
Select Cast(Cast(Year(@Input) As char(4))
+ @StartDayMonth As datetime) As StartDate
) As S1
) As S
)
End
は私が財政の開始の月と日を表し0401
のスタブで始まる関数に入れている以下のような何かができます年。それに私は渡された日付の年を前置するので、2012年の日付が渡された場合は20120401
のようなものが得られます。 @Input
が1-Aprよりも遅い場合は、@Input
の新しい会計年度になります。 @Input
が1 - 4月より前の場合、私たちは今年度の1 - 4月に始まる会計年度です。今度は財政開始日があるので、それらの間の日数を見つけて1を加えてください(そうでなければ、1月は1日ではなく0日と見なされます)。 2012年3月31日を過ぎると、2012年がうるう年なので365の代わりに366が返されることに注意してください。
あなたはそのテーブルなしでコードを与えることができますか?私は、来年の4月1日から3月31日に始まる日数が必要ですか? – Olivarsham
@Olivarsham - 会計日を提供するために私の応答を更新しました。 – Thomas
ありがとう..それは働いた:) – Olivarsham
@Olivarsham、会計年度はすべての国共通ではありません。いくつかの場所はApr-mar、どこかはJan-Decです。だから、それはあなたの自己のために書く必要があるあなたの特別なアプリケーションの要件です。私はそれについての標準的な質問はないと思います。
この機能をうまく試してください。これにより、会計年度の日番号が返されます。
CREATE FUNCTION [dbo].[FiscalDay] (@CurrentDATE datetime)
RETURNS int
AS
BEGIN
DECLARE @FiscalDay int;
DECLARE @YearStartDate DateTime;
Set @YearStartDate=Cast('20120401' As DateTime)
set @FiscalDay = DATEDIFF(DAY,@YearStartDate , @CurrentDATE)
RETURN(@FiscalDay);
END;
GO
ええ、私はカスタムクエリだけを要求しています.. – Olivarsham
@Olivarsham親切に与えられた関数を試してください –
- 1. 数量金融リサーチ言語
- 2. JSON金融プロトコル?
- 3. 金融時系列の変数
- 4. Java用数量金融/数学ライブラリ
- 5. 金融用Pythonライブラリ
- 6. 金融日中のデータ - セッション値を計算しますか?
- 7. 計算SQLの日付間の年数
- 8. 金融取引用API
- 9. 金融機関向けのFIXプロトコルとは何ですか?
- 10. 金融機関のJavaクラス表現ですか?
- 11. Django webapp - 金融アカウント情報の追跡
- 12. Pythonでの金融技術分析
- 13. 金融アプリケーションのトランザクション分離レベル
- 14. リアルタイムCUDA金融アプリケーションの設計方法
- 15. 金融番号の正規表現
- 16. 複数rics yahoo金融データのダウンロード問題
- 17. SQL - 日付間の金額の分配
- 18. SQLの日付 - 関数
- 19. SQLの日付関数は...
- 20. SQL Server 2012 - 週の日付土曜日の金曜日
- 21. トランザクション監査の追加に関する提案SQL Server 2008データベースの金融システムの場合
- 22. PHPの日付数年と日数
- 23. 無効な構文CS50金融
- 24. VBA morningstar金融を使ったWebスクラブ
- 25. 年の日付の部分のSQLクエリ
- 26. テーブル内の日付の年のSQLテスト
- 27. 1年に13番目の金曜日は何回ですか?
- 28. 年wise平均日SQL
- 29. DAX。前年の金額
- 30. はなぜNumberFormatterは、フォーマットの金融小数の桁数をドロップしない()
週末(米国、中東?)、為替休日または銀行休暇を含みますか? – joshp
これはあなたのアプリケーションに関連しないかもしれませんが、あなたがいる国にも依存していることを忘れないでください。例えば、オーストラリアの会計年度は実際には7月1日から6月30日までですので、4月2日は2 http://en.wikipedia.org/wiki/Fiscal_yearには、さまざまな会計期間の詳細があります。 –
翌年の4月1日から3月31日までです。それで全部です。休暇を除外する必要はありません。お礼ありがとうございます。 – Olivarsham