通过CURRENT_TIMESTAMP更新日期..为什么全部为零?

时间:2014-07-31 23:52:22

标签: php mysql date timestamp

我正在尝试在记录上发生任何更新时更新日期,字段类型为datetime,我将默认值设置为CURRENT_TIMESTAMP。当更新sql被执行时,结果全部为零!

0000-00-00 00:00:00

   $sql = 'INSERT INTO product_shop_offers (id,product_id,shop_id,price,currency_id,added_by,last_update)'
            . ' VALUES (?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE id=?,shop_id=?,price=?,currency_id=?,added_by=?,last_update=?';

    $this->db->query($sql, array(
                $storeInfoArray['recordId'],
                $productId,
                $storeInfoArray['storeNameNo'],
                $storeInfoArray['price'],
                $storeInfoArray['currency'],
                $addedBy,
                'CURRENT_TIMESTAMP()',   
                $storeInfoArray['recordId'],
                $storeInfoArray['storeNameNo'],
                $storeInfoArray['price'],
                $storeInfoArray['currency'],
                $addedBy,
                'CURRENT_TIMESTAMP()'
            ))

注意:我检查了Similar problem question,但我不明白这个问题!!请有人帮忙。

3 个答案:

答案 0 :(得分:2)

是因为你在字符串'CURRENT_TIMESTAMP()'中绑定了..我不确定你能做到这一点并且它被转换为零。

如果您在数据库中有默认设置,为什么还要打扰它呢?只需从语句中删除字段..哦,您需要将属性ON UPDATE CURRENT_TIMESTAMP添加到列中:

ALTER TABLE product_shop_offers
MODIFY COLUMN last_update DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

如果您需要,否则您可能需要直接将其写入查询。

答案 1 :(得分:1)

我认为它应该对你有所帮助

  

MySQL CURRENT_TIMESTAMP field updates on every update

答案 2 :(得分:0)

CURRENT_TIMESTAMP()更改为NOW()

另一种可能的方法是将字段类型从datetime设置为timestamp