>Ciao a tutti, in una query ho creato un campo DIFF_DATA che è
>la differenza tra i campi DATA_FINE e DATA_INIZIO. Fin qui tutto OK.
ciao, DIFF_DATA è la differenza in giorni?
>A1= 1 A2= 1 A3= 1
>Cioè che 396 = 1 Anno , 1 mese , 1 giorno
non è così semplice ricavare il numero preciso al 100%. Questo perchè esistono gli anni bisestili (i cui giorni sono 366).
Per i mesi dobbiamo assumere una media di 30gg per ogni mese..
Una funzione non precisa al volo che mi è venuta è questa:
USE tempdb;
GO
DECLARE @Diff_Data int = 2835;
DECLARE @MediaMese decimal(3,1) = 365/CAST(12 AS decimal(3,1));
SELECT
T.Anni
, T.Mesi
, Giorni = @Diff_Data - (T.Anni * 365) - (T.Mesi * 30)
FROM
(
SELECT
TA.Anni
, Mesi = CAST(@Diff_Data/@MediaMese AS int) - 12 * TA.Anni
FROM
(
SELECT
Anni = CAST(@Diff_Data/365 AS int)
) TA
) T
Però, se quel diff_data lo ottieni da una differenza in giorni tra date, è meglio che usi quelle due date sfruttando la funzione DATEDIFF:
http://msdn.microsoft.com/it-it/library/ms189794.aspx
>Speso di essermi spiegato bene, grazie anticipatamente a tutti
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi