Палец вверх 2
Перевод
Перевод

Как я могу выбрать, если столбец Дата совпадает с текущим годом

Это мой Student стол

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

Как я могу написать соответствующий запрос, чтобы проверить, совпадает ли значение registerDate этого человека с текущим годом (2012)?

sql
задан Bonus Kun 5 мар. 2012 г., 21:19:54
источник

4 ответа

Решение 4
Перевод
Перевод
SELECT *
FROM Student
WHERE YEAR(registerDate) = YEAR(getdate())
ответ дан Taryn 5 мар. 2012 г., 21:22:39
источник
Палец вверх 6
Перевод
Перевод

Наиболее прямым решением было бы использование функции YEAR или DATEPART в любой DATEPART SQL, которую вы используете. Это, вероятно, удовлетворит ваши потребности, но имейте в виду, что этот подход не позволяет использовать индекс, если вы ищете в таблице совпадения. В этом случае было бы более эффективно использовать оператор BETWEEN .

например

SELECT id, name, registerDate 
FROM Student 
WHERE registerDate BETWEEN 2012-01-01 and 2012-12-31

То, как вы сгенерируете первый и последний день текущего года, зависит от разновидности SQL.

Потому что вы используете диапазон, и индекс может быть использован. Если бы вы использовали функцию для расчета года для каждой строки, ее нужно было бы вычислять для каждой строки в таблице, а не искать непосредственно в соответствующих строках.

ответ дан Code Magician 5 мар. 2012 г., 21:25:48
источник
Палец вверх 2
Перевод
Перевод

Если по вашему вкусу sql является Microsoft TSql, то это работает:

SELECT  * FROM Student Where datepart(yy,registerDate) = datepart(yy,GetDate())
ответ дан RThomas 5 мар. 2012 г., 21:23:39
источник
Палец вверх 0
Перевод
Перевод

Это должно работать для SQL Query:

SELECT * FROM myTable
WHERE month_column = MONTH(CURDATE()) AND
year_column =YEAR(CURDATE())
ответ дан Deepu Bhasin 11 сент. 2017 г., 13:57:47
источник