我有一个简单的问题...我有一个带有时间戳列的表...我通过查询这一行将mysql的时区设置为UTC
SET time_zone ='+ 00:00'
但是时间戳列仍然使用我机器的当前时区存储...这是一个错误还是什么?即时通讯使用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
答案 0 :(得分:1)
要同时将PHP和mySQL时区同步,可以在config / main.php文件中添加此代码。
'timeZone' => 'UTC'//This is for PHP
'db'=>array(
'charset' => 'utf8',
'initSQLs'=>array("SET time_zone = '+00:00'"),
),
`
现在您还可以使用CDbExpression ('NOW()')
在您想要的时区从系统获取当前日期时间。