过去13个月的数据

时间:2014-04-28 11:42:19

标签: sql-server tsql

我在SQL Server 2008数据库中有一个表,其中包含一个列'月',nvarchar数据类型,其中的数据以2013年1月的格式存储,'& #39; 2013年2月',' 2013年3月'等等到2014年3月'。

现在我想在2013年3月到2014年3月的数据中得到我的结果,但是我无法得到它。

我在尝试这个where子句: WHERE(月> DATEADD(月,DATEDIFF(年,0,GETDATE()) - 13,0))但它给了我一个错误说从字符串转换日期和/或时间时转换失败。

我还尝试将数据重命名为' 2014年3月'其他参赛作品也包括在内,但它也没有帮助。

亲爱的SQL专家,请帮助!

2 个答案:

答案 0 :(得分:0)

日期的Yucky格式。我的建议是将其转换为实际日期。令人高兴的是,SQL Server识别以下格式:

select convert(date, '15 MAR 2014')

所以,你可以这样做:

where convert(date, '15 ' + [Month]) > DATEADD(Month, DATEDIFF(year, 0, GETDATE()) - 13, 0)

我随意将日期设置为月中。您可能希望使用'01'而不是'15'

答案 1 :(得分:0)

你可以做这样的事情

SELECT *
FROM table 
where (LEFT(month,3) not in ('jan','feb') and right(month,4)='2013')
OR (LEFT(month,3) in ('jan','feb') and right(month,4)='2014')

结果集将包括2013年3月而不是2014年3月如果您想包含2014年3月将where子句的最后一部分更改为(LEFT(month,3) in ('jan','feb','mar') and right(month,4)='2014') 但我建议您将日期存储为日期时间