这是我Student
表如何选择,如果日期列是当年为同一
Id(int) | Name(varchar) | registerDate(Date)
1 John 2012-01-01
我怎样才能写出相应的查询,以检查人的registerDate
值是当前一年相同(2012年)?
这是我Student
表如何选择,如果日期列是当年为同一
Id(int) | Name(varchar) | registerDate(Date)
1 John 2012-01-01
我怎样才能写出相应的查询,以检查人的registerDate
值是当前一年相同(2012年)?
SELECT *
FROM Student
WHERE YEAR(registerDate) = YEAR(getdate())
如果碰巧你的SQL的味道微软TSQL那么这个工程:
SELECT * FROM Student Where datepart(yy,registerDate) = datepart(yy,GetDate())
最直接的解决办法是使用在YEAR
或DATEPART
功能的任何SQL的味道你使用。这可能会满足您的需求,但请记住,如果您在表格中搜索匹配项,此方法不允许使用索引。在这种情况下,使用BETWEEN
运算符会更高效。
例如
SELECT id, name, registerDate
FROM Student
WHERE registerDate BETWEEN 2012-01-01 and 2012-12-31
如何生成当年的第一天和最后一天将因SQL风格而异。
因为您正在使用范围,并且可以使用索引。如果您正在使用函数计算每行的年份,则需要计算表中的每一行,而不是直接查找相关行。
加一个比我自己更彻底的答案:) – RThomas 2012-03-05 17:28:14
这应为SQL查询工作:
SELECT * FROM myTable
WHERE month_column = MONTH(CURDATE()) AND
year_column =YEAR(CURDATE())
'YEAR(registerDate)= YEAR(CURDATE())' – 2012-03-05 17:20:39
上面是MySQL。 MS SQL Server使用'GETDATE()'。请发布您正在使用的RDBMS。 – 2012-03-05 17:25:21
谢谢@Michael,但你为什么不把它作为答案发送,所以我可以接受它:)谢谢你的帮助。 – 2012-03-06 08:44:15