0

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

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

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

date_default_timezone_set("America/New_York");

在我的 php 脚本开始时,但这仍然给出了不正确的时间戳。

4

3 回答 3

4

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

mysql> SET GLOBAL time_zone = 'America/New_York';

mysql> SET SESSION time_zone = 'America/New_York';

于 2013-04-04T16:52:46.567 回答
1

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

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

于 2013-04-04T16:45:03.043 回答
1

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

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

SET GLOBAL time_zone = timezone

 or

SET time_zone = timezone

注意:默认情况下不填充 TIMEZONE 设置。您需要在`mysqldatabase 下填充与时区相关的表。o只有在设置之后,您才能设置时区。

于 2013-04-04T16:49:38.033 回答