【问题标题】:MySql timestamp - different time after update all rowsMySql 时间戳 - 更新所有行后的不同时间
【发布时间】:2015-11-03 15:17:27
【问题描述】:

我需要更新events 表中的所有行。有带有时间戳数据类型的列event_date

但是,如果我用新日期(例如:2015-12-12 12:00:00)更新每一行(event_date 列),那么我有一些值为 2015-12-12 13:00:00 的行。

重点是 - 为什么有些行是正确的,有些是 +1h?

在 PHP 中,我使用的是 Nette 框架和他的 DateTime 对象,它扩展了标准 PHP DateTime...

任何想法,提示为什么会发生这种情况?

编辑:查询如下所示:

UPDATE `events` 
SET `event_date`='2016-2-13 12:00:00', `event_date_to`=NULL 
WHERE (`id` = 203)

我在 php 中设置的值是这样的:

$row->event_date = date("Y-m-d H:i:s", $oldRow['event_date']);

问题开始得更快 - 在此表中的日期为 2016-2-13 00:00:00 但在选择和回显日期更改为 2016-2-12 23:00:00 之后 - 但不是所有行...仅某人。所以我选择:

 select events.id, events.event_date, events.event_date_to,
 concat(year(event_date), '-', month(event_date), '-', 
 day(event_date), ' 12:00:00') as new_event_date, 
 IF(events.event_date_to IS NULL,null, concat(year(event_date_to), 
 '-', month(event_date_to), '-', day(event_date_to), ' 12:00:00')) as
 new_event_date_to from events

那个选择给我这样的行:

769,2014-04-22 19:30:00,2014-04-22 21:45:00,2014-4-22 12:00:00,2014-4-22 12:00:00

表示:id, event_date(real db value), event_date_to(real db value), event_date(插入的新值), event_date_to(插入的新值 - 可以为NULL)

并保存到 csv 文件...我现在正在解析这个文件,并在 foreach 中更新每一行...

我检查了所有查询并且时间都正常(12:00:00)所以我不明白并卡住了:)

【问题讨论】:

  • 不幸的是,如果您以相同的方式插入它们,那么肯定会发生其他事情 - 我怀疑 MySQL 是否会随机添加小时。也许插入时存在格式问题,或者某些值实际上插入为 13:00:00?您是否准确地转储了您的插入语句(sql)来比较这些值?您能否在此处发布一些此 sql,甚至可以附上插入后如何遇到的屏幕截图?
  • 你是如何更新这些的?实际使用的查询是什么
  • 我怀疑您可能应该使用 datetime 数据类型而不是 timestamp - 时间戳通常用于记录上次使用 on update CURRENT_TIMESTAMP 影响记录的时间(关于 MySQL 5.1 IIRC)
  • 也许添加一些sn-ps。这有点难以回答你的问题
  • 这可能是夏令时的问题 - TIMESTAMP 知道但 DATETIME 字段不知道

标签: php mysql


【解决方案1】:

您的 MySQL 时区可能与您的代码(在 php.ini 中指定)不同。

要对此进行测试,请尝试将此值插入 DATETIMETIMESTAMP 列:

foo_column = NOW()

同时,将 $datetime 插入单独的列 - 假设 $datetime 简单地等于当前时间:date('Y-m-d H:i:s', time())

bar_column = '$datetime'

如果值不同 - 那么你就有了。您的数据库本质上对时间的解释与您的 php 不同。

【讨论】:

    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多