2010-06-01 76 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