这是我的Student
表
Id(int) | Name(varchar) | registerDate(Date)
1 John 2012-01-01
如何编写相应的查询以检查此人的registerDate
值是否与当前年份(2012年)相同?
答案 0 :(得分:6)
最直接的解决方案是在您正在使用的SQL的任何风格中使用YEAR
或DATEPART
函数。这可能会满足您的需求,但请记住,如果您在表中搜索匹配项,则此方法不允许您使用索引。在这种情况下,使用BETWEEN
运算符会更有效。
e.g。
SELECT id, name, registerDate
FROM Student
WHERE registerDate BETWEEN 2012-01-01 and 2012-12-31
如何生成当前年份的第一天和最后一天将因SQL风格而异。
因为您正在使用范围,所以可以使用索引。如果您使用函数计算每行的年份,则需要为表中的每一行计算,而不是直接查找相关行。
答案 1 :(得分:4)
SELECT *
FROM Student
WHERE YEAR(registerDate) = YEAR(getdate())
答案 2 :(得分:2)
如果你的sql的风格是Microsoft TSql,那么这可行:
SELECT * FROM Student Where datepart(yy,registerDate) = datepart(yy,GetDate())
答案 3 :(得分:0)
这适用于SQL Query:
SELECT * FROM myTable
WHERE month_column = MONTH(CURDATE()) AND
year_column =YEAR(CURDATE())