MySql时间戳 - 更新所有行后的不同时间

时间:2015-11-03 15:17:28

标签: php mysql

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

但是如果我用新日期更新每一行(event_date列)(例如:2015-12-12 12:00:00),那么我有一些值为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(实际db值),event_date_to(实际db值),event_date(insert的新值),event_date_to(insert的新值 - 可以为NULL)

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

我查了所有查询,时间还可以(12:00:00),所以我不理解并且卡住了:)

1 个答案:

答案 0 :(得分:2)

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

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

foo_column = NOW()

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

bar_column = '$datetime'

如果值不同 - 那么你就拥有它。您的数据库本质上是以不同的方式解释时间。