我需要更新我的events
表中的所有行。列event_date
带有时间戳数据类型。MySql时间戳 - 更新所有行后的不同时间
但是,如果我更新每一行(event_date
列)与新的日期(expample:2015-12-12 12:00:00),那么我有一些值的行2015-12-12 13:00:00。
要点是 - 为什么有些行是正确的,有些是+ 1h?
在PHP中我使用•奈特框架和延伸非标准PHP的DateTime他DateTime对象...
任何想法,暗示为什么happends?
编辑:查询看起来是这样的:
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_to(真正的分贝值),活动日期(新价值对于插入),event_date_to(用于插入新的价值 - 可以为null)
,并保存到CSV文件...这个文件我解析当前和更新的foreach每一行...
我检查了所有的查询一个d时间还可以(12:00:00)所以我不明白并卡住:)
不幸的是,如果你以同样的方式插入它们,那么肯定还有别的事情发生 - 我怀疑MySQL会随机添加小时。也许在插入时出现格式问题,或者某些值实际上是作为13:00:00插入的?你准确地抛出了你的insert语句(sql)来比较这些值吗?你可以在这里发布一些这样的sql,甚至可以使用一次插入后的屏幕截图吗? –
你如何更新这些?什么是正在使用的实际查询 –
我怀疑你应该使用'datetime'数据类型而不是'timestamp' - 时间戳记通常用于记录上次使用'on update CURRENT_TIMESTAMP'影响的记录(截至MySQL 5.1 IIRC) – CD001