我在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专家,请帮助!
答案 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')
但我建议您将日期存储为日期时间