gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:07:59 26 4
gpt4 key购买 nike

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

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

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

在 PHP 中,我使用 Nette 框架和他的扩展标准 PHP DateTime 的 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(new value for insert), event_date_to(new value for insert - can be NULL)

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

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

最佳答案

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

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

foo_column = NOW()

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

bar_column = '$datetime'

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

关于php - MySql 时间戳 - 更新所有行后的不同时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33502682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com