2017-04-05 50 views
0

嗨,請讓我知道如何提取財政年度的最後一天在sql server.my財政年度開始從2016-04-01到2017-03-31財政年度的最後一天(Ie 2017-03-31)

+0

所以如果你通過2014年,你想'輸出2014-03-31'或'2015-03-31'? – Utsav

+0

我有From_Date和To_Date參數它將改變流行。如果我從日期參數傳遞爲2017-04-01然後我想結果應該是2018-03-31 –

+0

檢查我更新[答案](http://stackoverflow.com/a/43235201/5234334) – Utsav

回答

1

最近你可以使用的結束月的,你需要提供一個日期當月如下:

select eomonth('2017-03-01') 
+0

我正在使用sql server 2008R2 –

0

要獲得本財政年度的最後一天任何時間,你需要找到如果在行軍之前,或者明年三月的最後一場,如果在行軍之後:

declare @yourdate datetime = getdate(); 
select case when month(@yourdate) < 4 then CONVERT(datetime,cast(YEAR(@yourdate) as char(4)) + '-03-31' ,120) 
      else CONVERT(datetime,cast(YEAR(@yourdate) + 1 as char(4)) + '-03-31' ,120) 
     end as financial_year_end 
+0

謝謝Kannan。 –

-1

您可以選擇所有的日期命令他們的後代,並採取第一個。

SELECT date 
FROM table 
ORDER BY date desc 
LIMIT 1; 
+0

問題說sql server ...你的答案是爲mysql。 – VDK

0

編輯: 如果你想最後日期基礎上派生FROM_DATE,然後使用類似這樣

Rextester Demo

select 
    case when datepart(mm,from_date) <=3 then 
     cast(concat(year(from_date),'-03-31') as datetime) 
    else 
     dateadd(year,1,cast(concat(year(from_date),'-03-31') as datetime)) 
end as last_date_fin 
from 
(select '2017-04-30' as from_date union all 
select '2017-01-13') t; 

這樣from_date之間Jan - Mar會給同年的31st march。否則它會給明年的31st March

以前的答案:

http://rextester.com/AXVM26769

如果你想獲得行軍爲通過當年的最後一天,然後用

select cast(concat(given_year,'-03-31') as datetime) 
from 
(select '2017' as given_year) t 

如果您想通過2016年再獲得2017-03-31然後使用。您可以更改派生表中的年份並基於此更改輸出。

select dateadd(year,1,cast(concat(given_year,'-03-31') as datetime)) 
from 
(select '2016' as given_year) t; 
相關問題