Sql server SQL查询财务期间开始日期和所选日期之间的日期

Sql server SQL查询财务期间开始日期和所选日期之间的日期,sql-server,date,Sql Server,Date,我有一份水晶报告,其中包含以下查询: SELECT DISTINCT T0.DocNum, T0.TaxDate, T2.OcrName, T1.U_Field_Wt, T1.Quantity, T3.CCTypeCode FROM OIGN T0 INNER JOIN IGN1 T1 ON T0.[DocEntry] = T1.[DocEntry] INNER JOIN OOCR T2 ON T1.[OcrCode] = T2.[OcrCode] INNER JOIN OPRC T3 ON T

我有一份水晶报告,其中包含以下查询:

SELECT DISTINCT T0.DocNum, T0.TaxDate, T2.OcrName, T1.U_Field_Wt, T1.Quantity, T3.CCTypeCode
FROM OIGN T0 INNER JOIN IGN1 T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN OOCR T2 ON T1.[OcrCode] = T2.[OcrCode]
INNER JOIN OPRC T3 ON T1.[OcrCode] = T3.[PrcCode]
WHERE T0.TaxDate BETWEEN {?StartDate} AND {?EndDate}
我有一家公司,其财务期从每年4月1日开始,到次年3月31日结束

我想修改它,使查询只接受一个参数,即。
{?EndDate}
,并根据开始日期作为财务期间的开始日期和结束日期作为输入的任何日期返回结果。从而显示了今年迄今为止的结果。我如何做到这一点

试试这个:

@startdate = DATEADD(YEAR, 
              (CASE WHEN DATEPART(MM, @enddate) <= 3 THEN -1 ELSE 0 END), 
              CONVERT(DATE, CONVERT(VARCHAR(4), DATEPART(YEAR, @enddate)) + '-04-01'));
@startdate=DATEADD(年、,
(日期部分时的大小写(MM,@enddate)
@startdate = CONVERT(DATE,
              CONVERT(VARCHAR(4), 
               DATEPART(YEAR, @enddate) - 
                (CASE WHEN DATEPART(MM, @enddate) <= 3 THEN 1 ELSE 0 END)) + '-04-01');