Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
SQL Server 2000 - cambio dell'ora solare/legale
lunedì 02 aprile 2007 - 11.18
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
motodriver2002
Profilo
| Newbie
42
messaggi | Data Invio:
lun 2 apr 2007 - 11:18
Salve a tutti,
ho un problema con il cambio dell'ora solare/legale in SQL Server 2000.
Ho un tabella con un campo contenente un campo che indica una data ma è un campo INT che contiene i secondi passati dal 01/01/1970.
Per esempio
SELECT DATEDIFF(Second, '1970-01-01', '2007-04-01 12:00:00.000') restituisce 1175428800
Supponiamo quindi di avere un record con il valore 1175428800 nel campo "dial_sched_time".
Ogni mattina alle 04:00 gira una procedura che fa l'UPDATE di alcuni campi (in base ad un campo stato) spostandoli esattamente di un giorno e manetnendo l'ora invariata quindi il record con
dial_sched_time = 1175428800 dovrebbe assumere il valore 1175515200.
La procedura che ho scritto calcola il delta in giorni tra il valore di
SELECT DATEADD(Second, 1175428800, '1970-01-01') ----> 2007-04-01 12:00:00.000
e la data odierna
SELECT DATEDIFF(Day, '2007-04-01 12:00:00.000', GETDATE()) --> 1
aggiunge questo delta alla data del campo dial_sched_time
SELECT DATEADD(DAY, 1, '2007-04-01 12:00:00.000') --> 2007-04-02 12:00:00.000
infine converte la data ottenuta in secondi a partire dal 01/01/1970
SELECT DATEDIFF(Second, '1970-01-01', '2007-04-02 12:00:00.000') --> 1175515200
A parte la complessità del ragionamento che sarebbe stato molto più semplice sommando il valore 86400 (quantità dei secondi in un giorno) al campo "dial_sched_time", la procedura gira correttamente.
Il problema c'è stato il 25/03/2007 quando ho trovato che i record erano statio "avanzati" di 25 ore quindi la data
2007-03-24 12:00:00.000
è diventata
2007-03-25 13:00:00.000
Quello che avrei bisogno di capire meglio è il funzionamento di SQL Server e come gestisce le date ed il cambio dell'ora.
Consigli o suggerimenti?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 2 apr 2007 - 12:54
>Quello che avrei bisogno di capire meglio è il funzionamento
>di SQL Server e come gestisce le date ed il cambio dell'ora.
Ciao motodriver2002,
per memorizzare le informazioni di data e ora SQL Server offre i data type datetime e smalldatetime che differiscono per precisione e range di validità.
Sui Books Online troverai tutti i dettagli:
"datetime and smalldatetime"
http://msdn2.microsoft.com/en-us/library/aa258277.aspx
"Date and Time Functions"
http://msdn2.microsoft.com/en-us/library/aa258863.aspx
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !