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

时间:2012-01-07 21:44:37

标签: 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;

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

INSERT INTO `Customer` (`first_name`, `last_name`, `end_date`) VALUES ('John', 'Smith2', '2012-11-01');

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

UPDATE `Customer` SET `end_date` = '2012-14-01' WHERE `customer_id` = '18';

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

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

2 个答案:

答案 0 :(得分:5)

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

(因此它的无效日期,因此被转换为0000-00-00并且mysql返回了Data truncated for column 'end_date' at row 1警告,您可以通过在查看行为不当后立即查询SHOW WARNINGS到mysql来看到

2012-01-14是1月14日。

答案 1 :(得分:1)

使用它:

 UPDATE `Customer` SET `end_date` = date('Y-m-d') WHERE `customer_id` = '18';

使用日期功能更新此字段。