Я использую базу данных Northwind DB SQL и пытаюсь получить разницу между двумя датами в годах, причем месяцы не разделены.Пример найма сотрудника Дата 1992-05-01 должна составлять 27 лет 0 месяцев, а 1992-08-14 - 2 года 8 месяцев с использованием сегодняшнего дня в качестве даты для сравнения.Я хочу получить результаты для каждой строки таблицы с другими значениями в одном примере результата
FirstName |hireDate |hiredYears |hiredMonths nancy 1992-05-01 6 11
Это мой запрос
SELECT months-(Age*12) FROM (
SELECT CASE WHEN dateadd(year, datediff (year, [HireDate], getdate()),[HireDate]) > getdate()
THEN datediff(year, [HireDate], getdate()) - 1
ELSE datediff(year, [HireDate], getdate())
END as Age,
(case when datepart(day,getdate()) >= datepart(day,[HireDate])
then datediff(month, [HireDate], getdate())
else datediff(month, [HireDate], dateadd(month,-1,getdate()))
end) as months
FROM [Employees]
) results;
Первый запрос дал мне месяцы и подзапрос в годах, но я не знаю, как создатьподзапрос, который показывает все вместе.Кроме того, я хотел бы знать, может ли этот подзапрос иметь плохую производительность, потому что я хотел бы использовать нечто подобное в таблице с большим количеством записей, любым советом или ссылкой для чтения?