SQL查询日期在财务期间开始和选定日期之间

时间:2015-03-20 08:04:26

标签: 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 T1.[OcrCode] = T3.[PrcCode]
WHERE T0.TaxDate BETWEEN {?StartDate} AND {?EndDate}

我有一家公司的财务期从每年的4月1日开始,到明年3月31日结束。

我想修改它,使得查询只需要一个参数,即。 {?EndDate}并根据开始日期返回结果,即开始日期和结束日期为输入的任何日期。从而显示年初至今的结果。我该如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

试试这个:

@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 = CONVERT(DATE,
              CONVERT(VARCHAR(4), 
               DATEPART(YEAR, @enddate) - 
                (CASE WHEN DATEPART(MM, @enddate) <= 3 THEN 1 ELSE 0 END)) + '-04-01');