これは、2012年(私は人のregisterDate
値は現在の年と同じであるかどうかを確認するために適切なクエリを書くことができますどのように私のStudent
テーブルはどのように選択することができます
Id(int) | Name(varchar) | registerDate(Date)
1 John 2012-01-01
です)?
これは、2012年(私は人のregisterDate
値は現在の年と同じであるかどうかを確認するために適切なクエリを書くことができますどのように私のStudent
テーブルはどのように選択することができます
Id(int) | Name(varchar) | registerDate(Date)
1 John 2012-01-01
です)?
SELECT *
FROM Student
WHERE YEAR(registerDate) = YEAR(getdate())
SQLのあなたの香りは、Microsoft TSQLは、この作品で偶然場合:
SELECT * FROM Student Where datepart(yy,registerDate) = datepart(yy,GetDate())
最も直接的な解決策は、あなたが使用しているSQLのどんな味にYEAR
またはDATEPART
機能を使用することです。これはおそらくあなたのニーズを満たしますが、テーブルを検索して一致するものがある場合は、この方法ではインデックスを使用できません。この場合、BETWEEN
演算子を使用する方が効率的です。
SELECT id, name, registerDate
FROM Student
WHERE registerDate BETWEEN 2012-01-01 and 2012-12-31
現在の年の最初と最後の日をどのように生成するかは、SQLの味によって異なります。
範囲を使用しているため、インデックスを利用できます。関数を使用して各行の年を計算する場合は、関連する行を直接検索するのではなく、表の各行について計算する必要があります。
プラス私のよりもはるかに徹底的な答えのために1つ:) – RThomas
これは、SQLクエリのために働く必要があります。
SELECT * FROM myTable
WHERE month_column = MONTH(CURDATE()) AND
year_column =YEAR(CURDATE())
'YEAR(registerDate)= YEAR(CURDATE())' –
上記は、MySQL用です。 MS SQL Serverは 'GETDATE()'を使用します。使用しているRDBMSを投稿してください。 –
ありがとう@マイケルしかし、なぜ私はそれを受け入れることができる答えとしてそれを送信していない:)あなたの助けをありがとう。 –