這是我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