按财务期间过滤Sql

时间:2015-09-15 10:26:14

标签: sql tsql date case

我正试图通过本财政年度的所有数据。 请参阅下面的代码。

       select *

   FROM            dbo.vw_AN_Admin_VendorReturns

       where 
           case  month(getdate()) <4  -- If current month is less than April (old financial year)
               year(RtnDt) = year(getdate()) and month(RtnDt) <4 or year(RtnDt) = year(getdate())-1 and month(RtnDt) >3 

            case  month(getdate()) >3 -- If current month is more than March (New financial year)
                year(RtnDt) = year(getdate()) and month(RtnDt) >3 or year(RtnDt) = year(getdate())+1 and month(RtnDt) <4
            end

2 个答案:

答案 0 :(得分:0)

Krishn,根据您的简要说明,这可以解决您的问题。

select * 
from dbo.vw_AN_Admin_VendorReturns
Where 
Case 
    When Month(getdate())<4 
        Then Year(getdate())-1 
    Else 
        Year(getdate()) 
End 
= 
Case 
    When Month(RtnDt)<4 
        Then Year(RtnDt)-1 
    Else Year(RtnDt) 
End 

答案 1 :(得分:0)

据我了解你的问题,你可能正在寻找这些公式。

declare @toDate datetime = dateadd(day, -day(GETDATE()), GETDATE())
declare @fromDate datetime = dateadd(year, -1, @toDate)

只需将当前日期减去天数即可获得前一个月的最后一天,并将该日期减少一年即可获得1年的期限。

select 
  D.* 
from mydata D
where D.RtnDt > @fromDate and D.RtnDt <= @toDate

您不必声明变量,只是为了更好的阅读。 希望这会有所帮助。