【发布时间】:2012-03-27 08:48:54
【问题描述】:
我有一个简单的问题...我有一个带有时间戳列的表...我通过查询这一行将 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
【问题讨论】:
-
您是如何确定该列以何种形式存储的?
-
@DavidSchwartz 我不太明白你的问题。请进一步解释谢谢
-
您确定在查询中插入或更新的时间没有被时区偏移吗?
-
@Mahan:您说该列仍使用您机器的当前时区存储。我在问您如何确定列的存储方式。你遵循什么流程? (您确定它们存储不正确吗?也许它们存储正确,而您只是错误地检索/查看它们。这就是我想要解决的问题。)
-
给我们一个完整的例子。您插入的值、插入方式、存储的值、查看方式以及您期望的值。