我有一个看起来像的查询:
$query = "INSERT INTO `SmsServ`.`SmsReceived` (
`Id` ,
`Body` ,
`DateReceived`
)
VALUES ( NULL , "Foo" , CURRENT_TIMESTAMP);"
该查询的问题在于我希望将东部时间作为时间戳。我试过打电话:
date_default_timezone_set("America/New_York");
在我的PHP脚本开始时,但仍然给出了错误的时间戳。
答案 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在设置完成后,您可以设置时区。