мне нужно выбрать всех сотрудников, которые уже отработали 2 года с даты их трудоустройства. сначала я думал, что мой код работает. потому что данные были сгенерированы, когда я установил год работы конкретного сотрудника с 9 февраля 2017 года. но когда я изменил его с 9 февраля на 10 февраля, данные все еще генерируются.
Код
select Date_of_employment,FirstName,LastName from MemInfo WHERE datediff(YEAR,Date_of_Employment,getdate())=2
ой работает. я просто изменил ГОД на ДЕНЬ, чтобы получить точную ДАТУ
Лол, я попал в "Сумеречную зону"
Вы все равно получите два года, потому что разница всего в один день.





Из документы
DATEDIFF Returns the number of date or time datepart boundaries, crossed between two specified dates.
Итак, (псевдокод) DATEDIFF(year, 31.12.2018, 01.01.2019) вернет 1, потому что граница одного года была пересечена.
Вы можете получить лучшие результаты с DATEADD (datepart , number , date )
select Date_of_employment,FirstName,LastName from MemInfo WHERE DATEADD(year, Date_of_employment, 2) > GETDATE();
Возможно, вы захотите показать свои классы данных и больше кода, чтобы люди могли лучше ответить вам.