如何獲得一年中的財務日,即如果我將四月份的二號傳遞給該函數,則應該返回2.每年的四月一號開始財政年度。年度財務日的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
晚於4月1日,那麼我們處於@Input
年的新財年。如果@Input
早於1月4日,那麼我們處於上一年1月1日開始的財政年度。現在我們有財政開始日期,我們可以簡單地找到它們之間的天數並加1(否則1月4日將被視爲第0天而不是第1天)。請注意,自2012年3月31日起,閏年將自2012年起恢復366次而不是365次。
謝謝。你可以給沒有表的代碼?我需要從4月1日開始到明年3月31日的daycount? – Olivarsham
@Olivarsham - 我更新了我提供財政日的答覆。 – Thomas
謝謝..那工作:) – Olivarsham
@Olivarsham,每個國家都不常見的財政年度。有些地方是四月 - 三月,有些地方是一月到十二月。所以這是你的特殊應用需求,那麼你需要爲自己寫作。我認爲沒有標準的查詢。
請嘗試此功能。這將返回您的財政年度的日數。
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. SQL查詢檢索按年分組的財務年數據
- 2. 截斷日期財政年度
- 3. 財政年度語句所有財務年度(4月至三月)
- 4. SQL如何按財政季度和年份與日期字段
- 5. 報告中的SQL財年
- 6. 根據輸入的年份計算財務年度開始和結束日期SQL Server和SSRS
- 7. 財務年度數據庫設計中的處理策略
- 8. 如何創建財務年度的數據庫記錄
- 9. PHP計算財政年度
- 10. Excel公式爲財務/會計年度7月1日至6月30日
- 11. 財務年度更改需要對SQL Server數據庫進行哪些更改?
- 12. 如何在SQL Server中獲得當前財政年度季度?
- 13. 日期和財務數據
- 14. 我想查看財政年度之間的日期謊言
- 15. 更好的邏輯來檢查財政年度日期
- 16. 從oracle中的日期獲取財政年度
- 17. 最新日期到財政年度的PHP代碼中使用
- 18. 「if」函數的年和日
- 19. 年度部分日期的sql查詢
- 20. 僅當前財年的動態SQL日期
- 21. PLSQL試圖用數字變量(年)發現財政年度
- 22. 工作開始的財政年度
- 23. 季度和財政年度的數據庫設計
- 24. SSRS MDX - 顯示測量高達日期的財年中,顯示在財政年度
- 25. 的SQL Server 2008 R2:在當前財年
- 26. Kendo UI日期選擇器顯示財政年度
- 27. 獲得啓動和日期和財政年度結束
- 28. 年度日程
- 29. SQL天使用不存在於當前財政年度
- 30. SQL Server - 如何動態確定財政年度?
是否包括週末(美國,中東?),交換假期或銀行假期? – joshp
這可能與您的申請無關,但請不要忘記,這也取決於您所在的國家。例如,澳大利亞的財政年度實際上是從7月1日到6月30日,因此4月2日不應該返回2 http://en.wikipedia.org/wiki/Fiscal_year有關於不同會計期間的更多信息。 –
應該從明年4月1日到3月31日。就這樣。無需排除節假日。 – Olivarsham