Originariamente inviato da musghs
ciao, forse nn hai capito il mio problema.
Ho un server con un ora impostata corretta (Europe/Rome).
Se vado in mysql e faccio un SELECT NOW(); non mi trovo l'ora del server ma un'ora sbagliata, indietro di 10 ore.
Come faccio ad aggiornare l'ora di mysql?
Ho provato SET GLOBAL time_zone = SYSTEM;
ma non mi va.
io ho capito benissimo, e ti ribadisco che esistono due funzioni mysql.
NOW() che ritorna l'ora CORRETTA (+1, +2 ore etc), presa dal time_zone per capirci e utc_timestamp
per quella non corretta.
Ecco un esempio che mi pare palese.
codice:
mysql> select now(),utc_timestamp();
+---------------------+---------------------+
| now() | utc_timestamp() |
+---------------------+---------------------+
| 2011-10-04 09:36:08 | 2011-10-04 07:36:08 |
+---------------------+---------------------+
1 row in set (0.00 sec)
Devi verificare nel caso
codice:
mysql> show variables like '%time%';
+---------------------------------------+-------------------------------+
| Variable_name | Value |
+---------------------------------------+-------------------------------+
...
| system_time_zone | ora legale Europa occidentale |
| time_zone | SYSTEM |
...
+---------------------------------------+-------------------------------+
26 rows in set (0.00 sec)
Cosė vedi "come" ragiona
codice:
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | SYSTEM |
+--------------------+---------------------+
1 row in set (0.00 sec)
Se vuoi cambiare le timezone ti serve avercele, si scaricano da qui
http://downloads.mysql.com/general/t...010l_posix.zip
blocchi il server, estrai lo zip dentro la cartella dei dati e riavvii il server.
A quel punto puoi dare qualcosa tipo
codice:
SET SESSION time_zone = 'Africa/Accra';
verifica con la select precedente se OK
Ecco un esempino fatto or ora dove setto a +11 la sessione
codice:
mysql> set session time_zone='Etc/GMT+11';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | Etc/GMT+11 |
+--------------------+---------------------+
1 row in set (0.00 sec)
mysql> select now(),utc_timestamp();
+---------------------+---------------------+
| now() | utc_timestamp() |
+---------------------+---------------------+
| 2011-10-03 20:49:40 | 2011-10-04 07:49:40 |
+---------------------+---------------------+
1 row in set (0.00 sec)
Infine i nomi li trovi in
mysql.time_zone_name.name
codice:
mysql> select name from mysql.time_zone_name limit 10;
+--------------------+
| name |
+--------------------+
| Africa/Abidjan |
| Africa/Accra |
| Africa/Addis_Ababa |
| Africa/Algiers |
| Africa/Asmara |
| Africa/Asmera |
| Africa/Bamako |
| Africa/Bangui |
| Africa/Banjul |
| Africa/Bissau |
+--------------------+
10 rows in set (0.00 sec)
Spero di essere stato esaustivo