我正在开发一个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?
答案 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';
使用日期功能更新此字段。