Salve a tutti ho uno strano problema con il timezone.
Nel database ho un campo timestamp ’2013-06-11 05:47:27′, come mai sei imposto SET time_zone = ‘-04:00′ il campo timestamp restituisce ’2013-06-10 23:47:27′ quindi -6 ore invece di -4?![]()
Salve a tutti ho uno strano problema con il timezone.
Nel database ho un campo timestamp ’2013-06-11 05:47:27′, come mai sei imposto SET time_zone = ‘-04:00′ il campo timestamp restituisce ’2013-06-10 23:47:27′ quindi -6 ore invece di -4?![]()
Perché -04 è un valore assoluto, non è relativo al valore che è impostato in questo momento. La tua domanda ha senso solo se il timestamp impostato ora è +0.
STK/Unit: Unit Test framework per MariaDB
http://stk.wikidot.com/stk-unit
Ok perfetto, allora a tuo parere qual'è il miglior metodo per impostare il timezone corretto considerando il fuso orario di Miami, che attualmente è -4, avendo il server in italia?Originariamente inviato da in the web
Perché -04 è un valore assoluto, non è relativo al valore che è impostato in questo momento. La tua domanda ha senso solo se il timestamp impostato ora è +0.
In teoria è giusto (se Miami è -04) ma bisogna vedere come è configurato il server. Esegui questo e posta qui il risultato:
SELECT @@GLOBAL.system_time_zone, @@GLOBAL.time_zone, @@SESSION.time_zone, NOW();
Dimmi anche se l'ora che ti dà NOW() è giusta, e se non è giusta dimmi a che ora l'hai eseguito
STK/Unit: Unit Test framework per MariaDB
http://stk.wikidot.com/stk-unit
questo è quello che mi da.Originariamente inviato da in the web
In teoria è giusto (se Miami è -04) ma bisogna vedere come è configurato il server. Esegui questo e posta qui il risultato:
SELECT @@GLOBAL.system_time_zone, @@GLOBAL.time_zone, @@SESSION.time_zone, NOW();
Dimmi anche se l'ora che ti dà NOW() è giusta, e se non è giusta dimmi a che ora l'hai eseguito
Array (
[@@GLOBAL.system_time_zone] => CEST
[@@GLOBAL.time_zone] => SYSTEM
[@@SESSION.time_zone] => SYSTEM
[NOW()] => 2013-06-14 15:05:29
)
e l'orario è corretto.
E' giusto, siamo nell'Europa centrale. Stando a questo sito:
http://www.timeanddate.com/worldclock/city.html?n=156
Miami è il time zone -5.
SET time_zone = '-05:00';
Ovviamente funziona solo per la connessione corrente, ma se sei in hosting non puoi fare diversamente.
STK/Unit: Unit Test framework per MariaDB
http://stk.wikidot.com/stk-unit
Quindi ritorniamo al punto di partenza.Originariamente inviato da in the web
E' giusto, siamo nell'Europa centrale. Stando a questo sito:
http://www.timeanddate.com/worldclock/city.html?n=156
Miami è il time zone -5.
SET time_zone = '-05:00';
Ovviamente funziona solo per la connessione corrente, ma se sei in hosting non puoi fare diversamente.
Il problema è che se io metto SET time_zone = '-05:00' lui mi sottrae 7 ore e non 5!
Non è che per qualche arcano meccanismo il set time_zone "normalizzi" all'orario UTC e poi applichi la differenza di orario?
Mi spiego: incuriosito ho fatto una semplicissima tabella:
se eseguocodice:id | tempo 3 | 2013-06-14 18:20:58
il risultato che ottengo è:codice:SET time_zone = '+00:00'; SELECT * FROM eta WHERE id = 3;
ovvero l'orario UTC (e visto la stagione, è corretto che si sia 2 ore avanti rispetto all'orario UTC)codice:3 2013-06-14 16:20:58
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
Infatti è lo stesso risultato che ottengo io.Originariamente inviato da Andrea1979
Non è che per qualche arcano meccanismo il set time_zone "normalizzi" all'orario UTC e poi applichi la differenza di orario?
Mi spiego: incuriosito ho fatto una semplicissima tabella:
se eseguocodice:id | tempo 3 | 2013-06-14 18:20:58
il risultato che ottengo è:codice:SET time_zone = '+00:00'; SELECT * FROM eta WHERE id = 3;
ovvero l'orario UTC (e visto la stagione, è corretto che si sia 2 ore avanti rispetto all'orario UTC)codice:3 2013-06-14 16:20:58
Quindi a questo punto la domanda è come posso lavorare perfettamente col fuso orario di Miami tenendo conto anche dell'ora legale?
Ho scoperto un'altra cosa (leggendo la documentazione):
http://dev.mysql.com/doc/refman/5.0/en/datetime.htmlMySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.)
Allora ho provato a modificare il tipo di campo da TIMESTAMP a DATETIME ed infatti la cosa funziona egregiamente. D'altronde, quando "guardo" il dato del campo tipo TIMESTAMP per comodità lo guardo via phpmyadmin, quindi a seguire la documentazione, lo "vedo" già tradotto per la mia time_zone.
Per quanto riguarda daylight saving time etc etc, dovresti guardare la documentazione perché da qualche parte (in SET time_zone) si parla di tabelle dei LOCALE da installare (l'ora legale non entra in vigore dappertutto allo stesso tempo), salvo voler risolvere via linguaggio server-side.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"