PHP使用来自东部时区的CURRENT_TIMESTAMP

时间:2013-04-04 16:40:41

标签: php mysql timezone

我有一个看起来像的查询:

$query = "INSERT INTO  `SmsServ`.`SmsReceived` (
    `Id` ,
    `Body` ,
    `DateReceived`
)
VALUES ( NULL , "Foo" , CURRENT_TIMESTAMP);"

该查询的问题在于我希望将东部时间作为时间戳。我试过打电话:

date_default_timezone_set("America/New_York");

在我的PHP脚本开始时,但仍然给出了错误的时间戳。

3 个答案:

答案 0 :(得分:4)

您确实更改了php时区。所以尝试更改mysql时区以及(php和mysql时间默认区域彼此不同):

的MySQL> SET GLOBAL time_zone ='America / New_York';

的MySQL> SET SESSION time_zone ='America / New_York';

答案 1 :(得分:1)

在这种情况下,

CURRENT_TIMESTAMP不是由PHP生成的,而是由MySQL生成的。您的查询要求MySQL根据MySQL的服务器时间设置当前时间戳。因此,您需要将MySQL配置为使用东部时区,而不是PHP。

您可能会考虑的一件事是将GMT用于数据库时间戳,并在应用程序中进行时区和夏令时转换。这样,您就不会在数据库中出现混合区域时间戳问题。当然,如果您认为自己不需要在应用中使用东方时区以外的任何内容,那么这对您来说可能并不重要。

答案 2 :(得分:1)

Mysql不关心使用哪个时区..

根据documentation,您可以设置要使用的时区....如果您使用的是MySQL 4.1.3或+

SET GLOBAL time_zone = timezone

 or

SET time_zone = timezone

注意:默认情况下不会填充TIMEZONE设置。您需要在`mysql数据库下填充与时区相关的表。 o在设置完成后,您可以设置时区。