我必须准备一份需要选择数据的报告:
本年度-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()))
这将为您提供正确的值。