如何在参数中设置过去年份和月份之间的日期



我必须准备一份需要选择数据的报告:

本年度-10与本月-19之间的本年度-1

所以我创建了参数:

DECLARE @EvaluationYearOld int = YEAR(GETDATE()) - 10
DECLARE @EvaluationYearNew int = YEAR(GETDATE()) - 1
DECLARE @EvaluationMonthCurrent int = Month(GETDATE()) - 19

SELECT * FROM tbl
WHERE 
year(raportdate) > @EvaluationYearOld
AND year(raportdate) < @EvaluationYearNew
AND month(raportdate) < @EvaluationMonthCurrent

它不太好用。我认为几个月有问题。

我认为这应该有效。试试看:

DECLARE @EvaluationYearOld int = YEAR(GETDATE()) - 10
DECLARE @EvaluationYearNew int = YEAR(GETDATE()) - 1
DECLARE @EvaluationMonthCurrent int = Month(GETDATE()) - 7

SELECT * FROM tbl
WHERE 
year(raportdate) between @EvaluationYearOld
AND @EvaluationYearNew
AND month(raportdate) < @EvaluationMonthCurrent

你必须使用小于12的负月份。因为当你从一个月开始服用19个月,就好像你从中服用了1年零7个月。那么你的病情可能会出现一些问题。

DECLARE @EvaluationMonthCurrent int = Month(GETDATE()) - 19

在上面的行中,MONTH(Date(函数将返回范围为1到12的整数,您将从中减去19,因此如果您取MONTH(Date(的最大值,即12,则您将得到12-19=-7,因此为了获得正确的值,请使用此函数

DECLARE @EvaluationMonthCurrent int = MONTH(DATEADD(MONTH,-19,GETDATE()))

这将为您提供正确的值。

最新更新