查询更新更新列表中未提及的时间戳列

时间:2017-05-30 13:13:34

标签: php mysql sql datetime default

我想只更新数据库中的一列,但由于某种原因,我的mysql查询也会更新另一列。

我的代码看起来有点像这样:

$sql = "UPDATE rackusage set totalDuration =".$timeDiff." where (rackID = '".$rackID."' and startTime LIKE '%".$getStartTime."%');";
            echo "<br>";
            echo $sql;
            echo "<br>";
            $res = mysql_query($sql);

这是在PHP中。 我只想更新总持续时间列,但由于某种原因,startTime列也会更新。 输出字符串如下所示:

UPDATE rackusage set totalDuration =30 where (rackID = '2' and startTime 
LIKE '%2017-05-30 18:34:36%');

这是结果数据库:

DB

2 个答案:

答案 0 :(得分:1)

您的startTime列似乎可能是这样的。

startTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

将您的UPDATE查询更改为包含SET startTime = startTime,您将失败默认的ON UPDATE部分。这样的事情可以解决问题。

UPDATE rackusage set  startTime = startTime, totalDuration =".$timeDiff."  ...

答案 1 :(得分:0)

如果O.Jones是正确的,并且您不想更新列statTime的值,则可以在数据库上处理此语句:

ALTER TABLE rackusage 
CHANGE `startTime` `startTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP