我有一个表,其中只包含月份和年份字段,两者都是 int。给定一个输入,比如月份,6 个月。我需要投影 6 个月大的数据。
例如,我有 2001 年 1 月 1 日至今的数据。给定输入为 6 个月,所以我必须从当前日期返回 6 个月才能得到结果。
输出将是 2001 年 1 月至 2012 年 1 月的数据。
我已经使用正确的子字符串字符串比较完成了程序。(一个讨厌的黑客)
有什么突出的方法吗?
DDL
Declare @t table (Mnth int, Yr int)
Insert Into @t
-- 2011
Select 1,2011 Union All select 2,2011 Union All Select 3, 2011 Union ALL Select 4,2011 Union ALL
Select 5,2011 Union All select 6,2011 Union All Select 7, 2011 Union ALL Select 8,2011 Union ALL
Select 9,2011 Union All select 10,2011 Union All Select 11, 2011 Union ALL Select 12,2011 Union ALL
--2012
Select 1,2012 Union All select 2,2012 Union All Select 3, 2012 Union ALL Select 4,2012 Union ALL
Select 5,2012 Union All select 6,2012 Union All Select 7, 2012 Union ALL Select 8,2012 Union ALL
Select 9,2012 Union All select 10,2012 Union All Select 11, 2012 Union ALL Select 12,2012
Declare @inputMonth int = 6
我正在尝试不进行字符串转换
Select Mnth,Yr,YEAR(DATEADD(mm,-@inputMonth,getdate())),MONTH(DATEADD(mm,-@inputMonth,getdate()))
From @t
WHERE YEAR(DATEADD(mm,-@inputMonth,getdate())) < Yr
AND MONTH(DATEADD(mm,-@inputMonth,getdate())) < Mnth
但它不工作
谢谢