财政年度的最后日期(即2017-03-31)

时间:2017-04-05 15:00:54

标签: sql sql-server sql-server-2008-r2

嗨,请告诉我如何从2016-04-01到2017-03-31从sql server.my财政年度开始提取财政年度的最后一天

6 个答案:

答案 0 :(得分:1)

您最近可以使用的是月末,因为您需要在该月提供一个日期,如下所示:

{{1}}

答案 1 :(得分:0)

要获得任何日期的财政年度的最后一天,您需要在3月之前找到行军的最后一天,或者如果在3月之后,则需要在明年3月的最后一天找到:

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

答案 2 :(得分: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;

答案 3 :(得分:0)

此代码将用于查找财政年度的最后日期。  对于上一年的案例匹配和“ THEN”部分将执行,而对于当年的“ ELSE”  部分将执行。

select CASE WHEN (MONTH(GETDATE())) <= 3 
THEN convert(varchar(4), YEAR(GETDATE())-1) + '-' + '03-31' 
ELSE convert(varchar(4),YEAR(GETDATE()))+ '-'  + '03-31'
end

答案 4 :(得分:0)

> LastDayOfYearFY] = 
>     eomonth( dateadd(month, 5, 
>                      dateadd(year, datepart(year, (dateadd(month, 6, [date])) ) -1900, 0)))

取自return-first-day-of-financial-year的创意扩展

答案 5 :(得分:-1)

您可以选择所有日期对其后代进行排序并选择第一个日期。

SELECT date
FROM table
ORDER BY date desc
LIMIT 1;