我有一个查询,看起来像:
$query = "INSERT INTO `SmsServ`.`SmsReceived` (
`Id` ,
`Body` ,
`DateReceived`
)
VALUES ( NULL , "Foo" , CURRENT_TIMESTAMP);"
查询的问题是,我想有东部时间作为时间戳。我试过打电话:
date_default_timezone_set("America/New_York");
在我的php脚本的开始,但仍然给出了一个不正确的时间戳。
您确实更改了php时区。所以试着改变mysql的时区(php和mysql的默认时区不同):
mysql> SET GLOBAL time_zone = 'America/New_York';
mysql> SET SESSION time_zone = 'America/New_York';
CURRENT_TIMESTAMP
在本例中不是由PHP生成的,而是由MySQL生成的。你的查询要求MySQL根据MySQL的服务器时间设置当前时间戳。因此,您需要配置MySQL使用东部时区,而不是PHP。
您可以考虑的一件事是仅使用GMT作为数据库时间戳,并在应用程序中进行时区和夏令时转换。这样就不会潜在地出现数据库中混合区域时间戳的问题。当然,如果你认为你不需要在你的应用程序中使用东部时区以外的任何东西,那么这对你来说可能并不重要。
Mysql不关心使用的是哪个时区
根据文档,您可以设置要使用的时区....如果你正在使用MySQL 4.1.3或+
SET GLOBAL time_zone = timezone
or
SET time_zone = timezone
注意:默认情况下不填充TIMEZONE设置。您需要填充`mysql
数据库下与时区相关的表。