2011-05-24 145 views
-2

我在我的几个表格中有这些“创建”和“修改”字段,但我刚刚意识到在这些表格中出现的小时不是正确的,但是一小时后,所以让我们假设它是10:47:05在当地时间,那么存储到数据库的小时数是11而不是10,而且它总是相同的,我从来没有得到正确的时间。Mysql不会返回正确的时间?

编辑:好的球员我试图从MySQL配置文件(的my.ini)设置的时间区,加入默认时区= '-05:00'在[myqld]部分和之后,我检查了全局和会话时区,看看是否一切正常,显然是这样,但是当我插入或更新一些记录并检查“已创建”和“已修改”字段以查看现在是否正确时,令我感到失望的是,他们还比现在晚了一个小时。

enter image description here

+2

这是最有可能的一个时区的问题。什么是你的服务器时区,什么是mySQL的时区? – 2011-05-24 18:14:22

+1

谁赞扬这个东西?这是一个数据库配置问题。 – 2011-05-24 18:17:23

+0

杀了cakephp标签 - 它至少不是一个cakephp问题 – 2011-05-24 23:23:47

回答

0

嗯,我终于搞定了它,事实证明,它不是MySQL,它甚至不是CakePhp - 它是PHP !!!!。

Here's我做了什么来解决这个问题:

+1

@ eddy-很高兴你终于可以解决它了! – 2011-05-25 17:51:56

+0

你看。我知道你可以自己做。 – 2011-05-25 17:55:34

0

这肯定看起来是一个时区的问题。如果您无权设置时区,则始终可以将mysql的unix时间戳从代码中设置为该字段的值。例如,如果你的字段是DATETIME,使用PHP,你可以编写“INSERT table SET datetime = FROM_UNIXTIMESTAMP(”.time()。“)”; ;,如果它只是一个时间戳字段,你可以将time()作为一个值。 DATETIME的另一种选择是使用php的日期函数发送一个MYSQL格式的日期字符串。

这是最好设置你的服务器的时区,但如果你不能,上面应该足够

编辑:上面的代码是纯粹的一个例子,所以概率不会复制和粘贴工作情况,这纯粹是一个指导