MySQL:如何禁用无效日期的自动转换

时间:2014-04-17 09:59:01

标签: php mysql sql

如何禁用无效日期的日期/日期时间列到0000-00-00的自动转换? 在我的my.cnf中,我插入了这一行:

sql-mode = STRICT_ALL_TABLES,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE

分段:

[client]
[mysqld]

Mysql服务器在Debian服务器上运行,而Mysql版本是5.1.63-0 + squeeze1。

当我使用PHP执行INSERT或UPDATE时,无效值将在0000-00-00中转换。

谢谢

修改

table create:

CREATE TABLE IF NOT EXISTS `versioni` (
  `cod_versione` int(11) NOT NULL,
  `data` datetime NOT NULL,
  PRIMARY KEY (`cod_versione`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入会在客户数据库中引发错误的语句,否则在开发中会转换为'0000-00-00':

INSERT INTO versioni (cod_versione, data) VALUES (67, '2014-04-101 00:00:00');

1 个答案:

答案 0 :(得分:-1)

好吧,你可以尝试不插入无效日期......

但如果必须,您应该使用CHAR(10)列而不是DATE列,因为这会为您提供所需的自由。


或者,只需使用PHP函数(例如checkdate)在将输入投放到数据库之前验证输入;)