sto cercando (invano) il modo per ottenere delle informazioni partendo da
una data di nascita.
Vorrei in pratica ottenere le seguenti informazioni:
1- l'eta' della persona rapportata alla data odierna partendo dalla data di
nascita
(sfortunatamente la funzione DATEDIFF non e' disponibile sul mio server SQL)
2- dedurre il segno zodiacale sempre in base alla data di nascita, qualcosa
del tipo:
SELECT CASE data_nascita
WHEN intervallo 1 THEN 'Ariete'
WHEN intervallo 2 THEN 'Toro'
WHEN i3 THEN 'Gemelli'
WHEN i4 THEN 'Cancro'
WHEN i5 THEN 'Leone'
WHEN i6 THEN 'Vergine'
WHEN i7 THEN 'Bilancia'
WHEN i8 THEN 'Scorpione'
WHEN i9 THEN 'Sagittario'
WHEN i10 THEN 'Capricorno'
WHEN i11 THEN 'Acquario'
WHEN i12 THEN 'Pesci'
ELSE ''
END data_nascita
FROM mitabella
Ma anche qui non sono a trovare nulla di efficace da sostituire al posto di
"intervallo n" .
L'unica soluzione che mi viene in mente e' quella di eseguire una query
doppia per impostare "manualmente" l'anno di confronto della data allo
stesso di quello di nascita...
C'e' qualche anima pia in grado di illuminarmi ?
Grazie
Su come calcolare l'età ( http://www.absistemi.it/permalink=ts90.ashx ) ,
ok:
CREATE FUNCTION dbo.uf_CalcoloEta
(@dataNascita datetime,@oggi datetime)
RETURNS int AS
BEGIN
declare @anniEta int
select @anniEta = datediff(yy, @dataNascita, @oggi) -
(case when (datepart(m, @dataNascita) > datepart(m, @oggi))OR
(datepart(m, @dataNascita) = datepart(m, @oggi) AND
datepart(d, @dataNascita) > datepart(d, @oggi))
then 1 else 0 end)
Return(@anniEta)
END
Esempio di utilizzo:
select dbo.uf_CalcoloEta('19750509', getdate()) as eta
Oppure:
CREATE FUNCTION dbo.uf_calcoloEta
(@dataNascita DATETIME,@oggi DATETIME)
RETURNS INT
AS
BEGIN
RETURN
(SELECT FLOOR (CAST (DATEDIFF (DD, @dataNascita, @oggi) AS DECIMAL (18, 7))
/ 365.25))
END
Sul secondo punto (i segni zodiacali...) potresti verificare giorno/mese
della data di nascita e verificare in quale intervallo giorno/mese dei vari
segni zodiacali si pone.
E, se mi permetti, una domanda: cosa significa "sfortunatamente la funzione
DATEDIFF non e' disponibile sul mio server SQL" ?
> Grazie
>
HTH,
Andrea
declare @dataNascita datetime
set @dataNascita = '19750509'
select @dataNascita
select
case
-- Ariete
when @dataNascita between
cast(cast(year(@dataNascita) as varchar(4)) + cast('03' as varchar(2)) +
cast('20' as varchar(2)) as datetime)
and
cast(cast(year(@dataNascita) as varchar(4)) + cast('04' as varchar(2)) +
cast('20' as varchar(2)) as datetime) then 'Ariete'
-- Toro
when @dataNascita between
cast(cast(year(@dataNascita) as varchar(4)) + cast('04' as varchar(2)) +
cast('21' as varchar(2)) as datetime)
and
cast(cast(year(@dataNascita) as varchar(4)) + cast('05' as varchar(2)) +
cast('21' as varchar(2)) as datetime) then 'Toro'
-- Tutti gli altri ...
end as segnoZodiacale
HTH,
Andrea