2010-06-01 75 views
2

我有這個unix時間戳值:1275364800(2010年6月1日)。php date()vs mysql MONTH()

當打印的PHP值: echo date('m',1275364800) 返回6(那OK)

但是,當我從數據庫中選擇一個字段:select MONTH(FROM_UNIXTIME(1275364800)) AS month返回5

爲什麼?

順便說一句,如果我運行此查詢選擇FROM_UNIXTIME(1275364800)爲Q我得到2010-05-31 23:00:00

+0

它可能是時區問題?在我的機器上都返回'6' ... – ircmaxell 2010-06-01 20:46:16

回答

0

因爲12753648002010-05-31在mysql中的語言環境不1st june 2010。這些是在不同的機器上運行嗎?

+0

+1 PHP返回05這裏的回聲日期('m',1275364800)。 – 2010-06-01 20:50:52

+0

實際上都在同一臺機器上運行......這就是我不明白。 – andufo 2010-06-01 20:52:58

1

要在MySql中設置語言環境,請執行以下操作。

首先檢查你的本地是什麼:

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

爲了確保其使用正確的,如果這是corrent改變你的Apache/PHP的語言環境。

要更改語言環境中的MySQL

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

en_UK是你希望它改變什麼!

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

希望這可以幫助你!

+0

嗨,我做到了,但做完之後:「SET lc_time_names ='en_UK';」更改不會保存,並且所有內容都保持爲en_US – andufo 2010-06-01 21:01:09

+0

已嘗試使用GLOBAL,SET GLOBAL LC_TIME_NAMES ='en_UK'; – RobertPitt 2010-06-01 21:16:47

+0

很好,但它也給了錯誤。 – andufo 2010-06-01 21:37:43