2010-06-01 5 views
2

J'ai cette valeur d'horodatage d'unix: 1275364800 (1er juin 2010).php date() vs mysql MONTH()

Lors de l'impression de cette valeur avec php: echo date('m',1275364800) retourne 6 (ok) des thats

Mais quand je sélectionne un champ à partir d'une base de données: select MONTH(FROM_UNIXTIME(1275364800)) AS month retourne 5

Pourquoi?

BTW, si je lance cette requête select FROM_UNIXTIME (1275364800) AS q i get 2010-05-31 23:00:00

+0

Pourrait-il s'agir de problèmes de fuseau horaire? Sur ma machine les deux retournent '6' ... – ircmaxell

Répondre

0

Parce que 1275364800 est 2010-05-31 pas 1st june 2010 dans les paramètres régionaux de MySQL. Sont-ils exécutés sur des machines différentes?

+0

+1 PHP renvoie 05 pour la date d'écho ('m', 1275364800) ici. –

+0

effectivement les deux sont exécutés dans la même machine ... c'est ce que je ne comprends pas. – andufo

1

Pour définir les paramètres régionaux dans MySQL, procédez comme suit.

Vérifiez d'abord ce que votre local est:

mysql> SELECT @@lc_time_names; 
+-----------------+ 
| @@lc_time_names | 
+-----------------+ 
| en_US   | 
+-----------------+ 

Pour vous assurer son utilisation de la bonne, Si cela est Corrent le changement vos paramètres régionaux apache/php.

Pour vous modifier les paramètres linguistiques dans MySql

mysql> SET lc_time_names = 'en_UK';  
Query OK, 0 rows affected (0.00 sec) 

en_UK être ce que vous voulez changer pour!

mysql> SELECT @@lc_time_names; 
+-----------------+ 
| @@lc_time_names | 
+-----------------+ 
| en_UK   | 
+-----------------+ 

Espérons que ça vous aide !.

+0

Salut, je l'ai fait, mais après avoir fait: "SET lc_time_names = 'en_UK';" les changements ne sont pas sauvegardés, et tout reste comme en_US – andufo

+0

Avez-vous essayé en utilisant GLOBAL, SET GLOBAL LC_TIME_NAMES = 'en_UK'; – RobertPitt

+0

yeap, mais il a aussi donné des erreurs. – andufo