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

Bon*_*Kun 3 sql

这是我的Student桌子

Id(int) | Name(varchar) | registerDate(Date)
1         John            2012-01-01
Run Code Online (Sandbox Code Playgroud)

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

Cod*_*ian 6

最直接的解决方案是在您使用的SQL的任何风格中使用YEARDATEPART函数.这可能会满足您的需求,但请记住,如果您在表中搜索匹配项,则此方法不允许您使用索引.在这种情况下,使用BETWEEN运营商会更有效.

例如

SELECT id, name, registerDate 
FROM Student 
WHERE registerDate BETWEEN 2012-01-01 and 2012-12-31
Run Code Online (Sandbox Code Playgroud)

如何生成当年的第一天和最后一天将因SQL风格而异.

因为您正在使用范围,所以可以使用索引.如果您使用函数计算每行的年份,则需要为表中的每一行计算,而不是直接查找相关行.


Tar*_*ryn 5

SELECT *
FROM Student
WHERE YEAR(registerDate) = YEAR(getdate())
Run Code Online (Sandbox Code Playgroud)