我有一个快速问题。。。我有一个带有时间戳列的表。。。我通过查询这行将mysql的时区设置为UTC
SET time_zone='+00:0'
但时间戳列仍然使用我机器的当前时区存储。。。这是虫子还是什么?im使用Yii-php框架存储数据,并使用Phpmyadmin查看数据
这是完整的场景
1) 我有一个表,它有6列(id、post_hash、user_id、post_msg、post_time、update_time)
2) post_time和update_time都是时间戳。。。
3) 但是update_time有一个属性,当行被修改时,它会更新自己。post_time只是一个简单的时间戳列
4) 插入数据时的问题。。。post_time和update_time遵循我计算机的当前时区,但在执行SQL之前,我已经将mysql和php的时区设置为UTC。
这是我的Yii代码
$conn = Yii::app()->db;
//Store the message to database
$sql = "INSERT INTO posts(post_hash,user_id,post_msg,post_time)
VALUES(:post_hash,:user_id,:post_msg,:post_time)";
$dbcmd = $conn->createCommand($sql);
$user_id = Yii::app()->user->user_id;
date_default_timezone_set('UTC');
$post_date = date("Y-m-d H:i:s",time());
$post_hash = "p-".Ynet_Crypt::encryptString(time().Yii::app()->user->username,"sha256");
$dbcmd->bindParam(":post_hash",$post_hash);
$dbcmd->bindParam(":user_id",$user_id);
$dbcmd->bindParam(":post_msg",$msg);
$dbcmd->bindParam(":post_time",$post_date);
$dbcmd->execute();
这是我的yii配置,它将我的mysql连接设置为UTC时区
'charset' => 'utf8',
'initSQLs'=>array("SET time_zone = '+00:00'"),
),
我只想存储的日期时间是UTC
要同步PHP和mySQL时区,您可以在config/main.PHP文件`中添加以下代码
'timeZone' => 'UTC'//This is for PHP
'db'=>array(
'charset' => 'utf8',
'initSQLs'=>array("SET time_zone = '+00:00'"),
),
`
现在,您还可以使用CDbExpression ('NOW()')
从系统中获取所需时区的当前日期时间。