Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208

    [MySql] problema con timezone

    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?

  2. #2
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    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.
    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?

  4. #4
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    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
    questo è quello che mi da.
    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.

  6. #6
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    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.
    Quindi ritorniamo al punto di partenza.
    Il problema è che se io metto SET time_zone = '-05:00' lui mi sottrae 7 ore e non 5!

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    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:
    codice:
    id      |         tempo
    3	|   2013-06-14 18:20:58
    se eseguo
    codice:
    SET time_zone = '+00:00';
    SELECT * FROM eta WHERE id = 3;
    il risultato che ottengo è:
    codice:
    3	2013-06-14 16:20:58
    ovvero l'orario UTC (e visto la stagione, è corretto che si sia 2 ore avanti rispetto all'orario UTC)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    208
    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:
    codice:
    id      |         tempo
    3	|   2013-06-14 18:20:58
    se eseguo
    codice:
    SET time_zone = '+00:00';
    SELECT * FROM eta WHERE id = 3;
    il risultato che ottengo è:
    codice:
    3	2013-06-14 16:20:58
    ovvero l'orario UTC (e visto la stagione, è corretto che si sia 2 ore avanti rispetto all'orario UTC)
    Infatti è lo stesso risultato che ottengo io.
    Quindi a questo punto la domanda è come posso lavorare perfettamente col fuso orario di Miami tenendo conto anche dell'ora legale?

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ho scoperto un'altra cosa (leggendo la documentazione):
    MySQL 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.)
    http://dev.mysql.com/doc/refman/5.0/en/datetime.html

    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"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.