在 Yii 1.x 的 CDbMigration
中,我应该如何正确使用 MySQL 的FROM UNIXTIME
?
我借用了将当前时间转换为时间戳的解决方案,从这个答案中以及打印它时,将当前时间转换为 MySQL 的DateTime
字段:
echo 'FROM_UNIXTIME('.$base.')'."'n";
echo 'FROM_UNIXTIME('.$sixDaysLater.')'."'n";
一切似乎都很好:
FROM_UNIXTIME(1418223600)
FROM_UNIXTIME(1418742000)
但是,当我尝试使用相同的技术作为迁移的一部分时:
$this->insert('contents', array
(
'author_id'=>1,
'type'=>5,
'status'=>1,
'category'=>1,
'title'=>'title',
'body'=>'body',
'creation_date'=>'FROM_UNIXTIME('.$base.')',
'modification_date'=>'FROM_UNIXTIME('.$base.')',
'availability_date'=>'FROM_UNIXTIME('.$sixDaysLater.')',
'short'=>'short'
));
这失败了 - 也就是说,迁移进展顺利,但我可以在phpMyAdmin中看到,此记录的相关字段已填充零(0000-00-00 00:00:00
(,而不是预期值。
我错过了什么?是因为insert
中的值正在编码/转义吗?
你可以改用CDBExpression:
new CDbExpression("NOW()");
我的意思是:
'creation_date'=>new CDbExpression("NOW()")
或者,如果您想使用FROM UNIXTIME
也可以这样做。
CDb表达式表示不需要转义的数据库表达式。