Pazite, pitanje glasi: Koliko godina ima osoba u datom momentu. Znaci, ulazni podaci su [posmatrani trenutak] i [datum rodjenja].
Oduzimanje Year(posmatran trenutak) - Year(datum rodjenja) daje tacan rezultat samo ako [posmatrani trenutak] pada posle rodjendana. Ako [posmatrani trenutak] pada pre rodjendana, osoba ima (Year(posmatran trenutak) - Year(datum rodjenja) - 1) godinu.
Zaista, ako je [posmatrani trenutak] = '23 Januar 2008' a [datum rodjenja] = '10 Mart 1960' onda osoba ima na dan 23 Januara 2008 47 godina a ne 48. 48 godina ce imati od 10. Marta 2008, pa sve do 9 Marta 2009. 10 Marta 2009 osoba ce imati 49 godina. 9 Marta 2009 imace jos uvek 48.
Zasto je problem da se ovo iskaze SELECT zrazom? Napisite mi taj izraz, u formatu
Code:
DECLARE @PosmatraniTrenutak AS datetime
DECLARE @DatumRodjenja AS datetime
SET @PosmatraniTrenutak = GetDate()
SET @DatumRodjenja = '19600310' -- ovo je YYYYMMDD format
SELECT
@PosmatraniTrenutak AS [Posmatrani trenutak]
, @DatumRodjenja AS [datum Rodjenja]
Starost = ........
Dovrsite SELECT . Ako ovo uspe, onda je moguce napisati ovakav kveri:
Code:
SELECT Z.DatumRodjenja, GetDAte() AS DanasnjiDatum, Starost = ......
FROM Zaposleni AS Z
Verjem da u praksi ponekda pritreba ovako nesto