SQL-选择日期大于一年中一个月的数据

SQL-选择日期大于一年中一个月的数据,sql,sql-server,Sql,Sql Server,我有一个名为quick的表,它有3列: enterYear enterMonth quizMark 2013 7 9.5 2013 8 8.5 2013 9 9.75 2013 10 10 2013 11 7.75 2013 12 8.5 201

我有一个名为
quick
的表,它有3列:

enterYear  enterMonth  quizMark

2013        7            9.5   
2013        8            8.5    
2013        9            9.75    
2013       10            10    
2013       11            7.75    
2013       12            8.5
2014        1            5   
2014        2            8.75    
2014        3            10
现在,我想选择2013年9月(包括9月)之后输入的条目。我尝试了这个错误的方法:

select * from quiz q where q.year>=2013 and q.month>=9
这省略了2014年的所有条目,因为它们的月份少于9个,但我确实希望它们出现在结果中,因为它们在2013年9月之后

于是,我尝试了这个

select * from quiz q 
where Convert(date, CAST(q.year as varchar(4))+'/'+CAST(q.month as varchar(2))+'/01')>='2013/9/01'
结果显示了大约半秒钟,然后通过发出错误消息迅速消失:

Msg 241,16级,状态1,第1行 从字符串转换日期和/或时间时,转换失败。“

可以有人帮助用正确的代码来实现的结果,非常感谢

select * from quiz q where q.year>2013 or(q.year=2013 and q.month>=9)
这将记录您从2013年9月起的所有日期


这将捕获从2013年9月起的所有日期。

根据您的索引,您可能会发现这提供了更好的性能。使用剩余谓词表示为单个范围搜索,而不是通常导致扫描的

select * 
from quiz q 
where (q.year>=2013) and (q.month>=9 OR q.year>=2014)

根据您的索引,您可能会发现这提供了更好的性能。使用剩余谓词表示为单个范围搜索,而不是通常导致扫描的

select * 
from quiz q 
where (q.year>=2013) and (q.month>=9 OR q.year>=2014)

如果它显示结果一秒钟,然后给您一个错误,则表中可能有无法转换的特定行(例如,年份列中的一个条目不是数字)。如果它显示结果一秒钟,然后给您一个错误,则表中可能有无法转换的特定行(例如,年份列中的一个条目不是数字)。