Zadanie 9.

Oblicz wiek pracowników, wynik posortuj według wieku malejąco.

Baza: Northwind, Tabela: dbo.Employees, Kolumny: FirstName, LastName, BirthDate, Wynik: 9 rows

13

Rozwiązanie

SELECT FirstName, LastName, DATEDIFF(year, BirthDate, CURRENT_TIMESTAMP) as Wiek
FROM dbo.Employees
ORDER BY Wiek DESC;

Można również użyć funkcji GETDATE() zamiast CURRENT_TIMESTAMP

[collapse]
  • ciekawski

    Czy można dodawać/odejmować dane typu datetime operatorami ‚+’ i ‚-‚? Uzyskałem zbliżony rezultat takim zapytaniem: RIGHT(YEAR(GETDATE()-BirthDate), 2) zamiast DATEDIFF. Wiem że powyżej 99 lat wiek będzie niepoprawny więc nie jest to poprawne zapytanie ale jestem ciekaw czy dodawanie lub odejmowanie w takiej sytuacji zostanie obliczone poprawnie.
    ————————–
    Odpowiedź: Dodawanie i odejmowanie nie działa poprawnie, podmieniłem zapytanie na DATEDIFF i wyszły inne wyniki.