Столбцы с метками времени не сохраняются в соответствии с желаемым часовым поясом - PullRequest
1 голос
/ 27 марта 2012

У меня быстрый вопрос ... У меня есть таблица со столбцом метки времени ... Я установил часовой пояс mysql на UTC, запросив эту строку

SET time_zone = '+00: 00'

но столбец меток времени по-прежнему сохраняется с использованием текущего часового пояса моей машины ... это ошибка или что-то в этом роде? Я использую Yii php framework для хранения данных и 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 следуют за текущим часовым поясом моего компьютера, но я уже установил часовой пояс моего mysql и php в UTC перед выполнением SQL.

это мой код 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 Ответ

1 голос
/ 27 октября 2015

Чтобы синхронизировать часовой пояс PHP и mySQL вместе, вы можете добавить этот код в файл config / main.php`

'timeZone' => 'UTC'//This is for PHP
'db'=>array(
'charset' => 'utf8',
'initSQLs'=>array("SET time_zone = '+00:00'"),
 ),

`

и теперь вы также можете использовать CDbExpression ('NOW()') для получения текущей даты и времени из системы в желаемом часовом поясе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...