更新db表中的日期时出现问题

Cat*_*ish 1 php sql codeigniter

我正在开发一个codeigniter项目,我正在尝试解决sql问题.我有一个查询更新我的表中的日期字段,它根本不更新它.

我有这张桌子

CREATE TABLE `Customer` (
  `customer_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `first_name` varchar(55) NOT NULL DEFAULT '',
  `last_name` varchar(55) NOT NULL DEFAULT '',
  `city` varchar(255) DEFAULT '',
  `state` char(2) DEFAULT '',
  `zip` int(5) DEFAULT NULL,
  `title` varchar(255) NOT NULL DEFAULT '',
  `image` varchar(255) DEFAULT '',
  `blurb` blob,
  `end_date` date DEFAULT NULL,
  `goal` int(11) DEFAULT NULL,
  `paypal_acct_num` int(11) DEFAULT NULL,
  `progress_bar` enum('full','half','none') DEFAULT NULL,
  `page_views` int(11) NOT NULL DEFAULT '0',
  `total_pages` int(11) NOT NULL DEFAULT '0',
  `total_conversions` int(11) NOT NULL DEFAULT '0',
  `total_given` int(11) NOT NULL DEFAULT '0',
  `conversion_percentage` int(11) NOT NULL DEFAULT '0',
  `avg_contribution` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`customer_id`)
) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

当我运行此查询以插入数据时,它运行正常并将日期设置为 2012-11-01

INSERT INTO `Customer` (`first_name`, `last_name`, `end_date`) VALUES ('John', 'Smith2', '2012-11-01');
Run Code Online (Sandbox Code Playgroud)

然后我得到customer_id并尝试运行此查询

UPDATE `Customer` SET `end_date` = '2012-14-01' WHERE `customer_id` = '18';
Run Code Online (Sandbox Code Playgroud)

并将日期end_date字段设置为0000-00-00.

为什么它将结束日期改为0000-00-00而不是2012-14-01?

Mar*_*ski 5

2012-14-01 是第十四个月的第一天:)

(因此它的无效日期,因此被转换为mysql返回0000-00-00Data truncated for column 'end_date' at row 1发出警告,你可以通过查看SHOW WARNINGS错误行为后立即查询到mysql)

2012-01-14 是1月14日.