【问题标题】:Updating date by CURRENT_TIMESTAMP .. Why all Zeros?按 CURRENT_TIMESTAMP 更新日期 .. 为什么全是零?
【发布时间】:2014-07-31 23:52:21
【问题描述】:

每当记录发生任何更新时,我都会尝试更新日期,字段类型是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,但我不明白这个问题!!请有人帮忙。

【问题讨论】:

  • 谢谢大家的帮助,我真的从你们那里得到了新的有价值的信息:)

标签: php mysql date timestamp


【解决方案1】:

是不是因为你绑定在字符串'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;

如果您需要它,您可能必须直接将其写入查询中。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      将CURRENT_TIMESTAMP() 更改为NOW()

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

      【讨论】:

      • MySQL 可以在插入时将 timestamp 转换为 datetime。这是一个很好的建议,但不是问题的原因。
      • hmm.. 等等,你的主键是 product_id 而不是 id?
      猜你喜欢
      • 1970-01-01
      • 2016-01-18
      • 2011-07-04
      • 2010-10-11
      • 2016-06-06
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      相关资源
      最近更新 更多