时间戳列没有按照我想要的时区存储


Timestamp columns not stored as what timezone I desired

我有一个快速问题。。。我有一个带有时间戳列的表。。。我通过查询这行将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()')从系统中获取所需时区的当前日期时间。