salve,
doppiadi2 wrote:
Ciao a tutti,
sono nuovo del forum e nuovo della programmazione .NET.
Sto sviluppando un'applicazione che fa uso di SQLServer 2005, e ho un problema sulla memorizzazione delle date.
Devo memorizzare la data 1543, ma ottengo la seguente eccezione:
{"SqlDateTime overflow. Must be between 1/1/1753 12
0
0 AM and 12/31/9999 11:59:59 PM."}
qualcuno sa indicarmi un modo per risolvere?
Ma è una limitazione di SqlServer 2005 il fatto di avere questo intervallo e non poter memorizzare date minori del 1753?
grazie in anticipo per la rispsota
si, e' un limite del tipo di dato, per SQL Server..
il tutto deriva da un grosso problema che affligge i calendari.. infatti tutti i calendari occidentali hanno risentito del cambiamento dal calendario giuliano al gregoriano, cosa che ha comportato, a causa
"dell'aggiustamento", la perdita di alcuni giorni nella transizione.. peggio ancora, il passaggio da un calendario all'altro non e' stato eseguito da tutti i paesi nello stesso momento, addirittura ci sono differenze centenarie tra le varie adozioni (la turchia nel tardo 1927), e questo comporta serie problematiche nella gestione delle date.. Sybase, da dove Microsoft ha "ereditato" il tipo di dato, ha implementato il tipo datetime ricalcando le specifiche "piu' larghe", cioe' quelle di prima adozione del nuovo calendario, che e' avvenuto in inghilterra nel 02/09/1752, e quindi per approssimazione, la data inferiore puo' solo essere 01/01/1753.. per date precedenti sorgerebbero problemi di adeguamento (anche con questa adozione, ma considera il potenziale caos per altre adozioni, con aggiustamenti "variabili" dipendenti dalla localizzazione, etc..).. un articolo molto interessante sui calendari e' reperibile presso
http://www.tondering.dk/claus/cal/d'altra parte, ora SQL Server 2008 supporta altri tipi di dato quali il datetime2, date (solo data), datetimeoffset,
http://msdn.microsoft.com/en-us/library/bb677335.aspx, basati sul calendario gregoriano, limitati tra il 01/01/0001 ed il 31/12/9999.. non ho sinceramente ancora pero' approfondito il discorso relativo ai "calcoli" utilizzabili con le funzioni integrate sulle date (dateadd(..), datediff(..)) ed il loro comportamento relativo al cambio di calendario e relativi aggiustamenti..
saluti