【发布时间】:2013-12-04 17:38:01
【问题描述】:
在我们的项目中有很多准备好的语句,它们使用FROM_UNIXTIME(?) 为timestamp 列设置一些值。有几个地方的逻辑取决于FROM_UNIXTIME(0) 将写入0000-00-00 00:00:00 的假设。这在测试机上完美运行。
在另一台机器上,mysql 配置为具有 sql_mode STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION。当我尝试FROM_UNIXTIME(0) 时,它会返回
ERROR 1292 (22007): Incorrect datetime value: '1970-01-01 02:00:00' for column 'date' at row 1
不幸的是,我无法更改准备好的语句和 mysql 配置。有什么方法可以绕过这些检查并使该功能在第一台机器上正常工作?我只看到一种方法 - 使用 IF 语句,但我确信应该有更正确的方法。
这是一个简短的 sscce:
CREATE TABLE test ( date TIMESTAMP NOT NULL DEFAULT 0 );
SET sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
INSERT INTO test VALUES (FROM_UNIXTIME(0));
【问题讨论】:
标签: mysql time prepared-statement unix-timestamp