Convertire un numero in gg mm aa

venerdì 29 luglio 2011 - 14.46
Tag Elenco Tags  Windows XP  |  Access (.mdb)  |  Office 2003  |  Internet Explorer 7.0

sagrimal Profilo | Junior Member

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.

Mi piacerebbe poter avere un risultato del campo DIFF_DATA indicato come numero di gg numero di mesi e numero di anni

Es. Se la DATA_FINE - DATA_INIZIO = 396 vorrei ottere tre campi A1 A2 A3 dove:

A1= 1 A2= 1 A3= 1

Cioè che 396 = 1 Anno , 1 mese , 1 giorno

Speso di essermi spiegato bene, grazie anticipatamente a tutti
Salvatore

alx_81 Profilo | Guru

>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
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5