如何选择Date列是否与当前年份相同

时间:2012-03-05 17:19:54

标签: sql

这是我的Student

Id(int) | Name(varchar) | registerDate(Date)
1         John            2012-01-01

如何编写相应的查询以检查此人的registerDate值是否与当前年份(2012年)相同?

4 个答案:

答案 0 :(得分:6)

最直接的解决方案是在您正在使用的SQL的任何风格中使用YEARDATEPART函数。这可能会满足您的需求,但请记住,如果您在表中搜索匹配项,则此方法不允许您使用索引。在这种情况下,使用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())