我正在尝试在记录上发生任何更新时更新日期,字段类型为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,但我不明白这个问题!!请有人帮忙。
答案 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)
答案 2 :(得分:0)
将CURRENT_TIMESTAMP()
更改为NOW()
另一种可能的方法是将字段类型从datetime
设置为timestamp