以下是我的表定义,它自动将时间戳值插入每条记录中。我想要做的就是让时间戳使用特定的时区,例如在我的情况下,我希望它使用不列颠哥伦比亚省的当前时间我该怎么做?
因为当我在表中插入数据时,我并没有真正从我的php脚本传递timestame值,但它采用默认值。
CREATE TABLE `cfv_postbusupdate` (
`BusNumber` int(11) NOT NULL,
`Direction` varchar(100) DEFAULT 'Not Provided',
`StopNames` varchar(300) DEFAULT 'Not Provided',
`Status` varchar(45) DEFAULT 'Not Provided',
`comments` varchar(150) DEFAULT 'None',
`username` varchar(45) DEFAULT 'anonymous_user',
`dayofweek` varchar(45) DEFAULT NULL,
`time` varchar(20) DEFAULT NULL,
`id` int(11) NOT NULL AUTO_INCREMENT,
`DatePosted` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
答案 0 :(得分:0)
时间戳存储为检索时转换为应用程序使用的时区的UTC值。如果您希望不列颠哥伦比亚省时间设置SET time_zone = 'america/vancouver';
手动参考是here
答案 1 :(得分:0)
使用此内容:请参阅此链接:https://stackoverflow.com/a/6158432/3242978
-- Make sure we're all working off of the same local time zone
test=> SET timezone = 'America/Los_Angeles';
SET
test=> SELECT NOW();
now
-------------------------------
2011-05-27 15:47:58.138995-07
(1 row)
test=> SELECT NOW() AT TIME ZONE 'UTC';
timezone
----------------------------
2011-05-27 22:48:02.235541
(1 row)
更新:1
根据MySQL docs,当#1193
使用错误的代码时,会出现错误SQLSTATE
。
Message: Unknown system variable %s
而且,正如您在same page上看到的那样,SQLSTATE 99003
未定义。