时间戳列未存储为我想要的时区

时间:2012-03-27 08:48:55

标签: php mysql timezone yii

我有一个简单的问题...我有一个带有时间戳列的表...我通过查询这一行将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

1 个答案:

答案 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()')在您想要的时区从系统获取当前日期时间。