更新日期字段
问题描述:
我继承有大量的数据表像更新日期字段
CREATE TABLE IF NOT EXISTS `ejl_registration` (
`id` int(11) NOT NULL auto_increment,
`team_id` int(11) default NULL,
`start_date` date default NULL,
`end_date` date default NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=88668 ;
起始日期日期和结束日期应该有这样的值MYSQL数据库:
- 2007-1-5,2007-12-31
- 2008-1-1,2008-12-31
- 2009-1-15,2009-12-31
但其中一些en_date字段为NULL或0000-00-00。 有没有办法让单个查询更新所有这些无效的en_date字段,并将它们的值设置为等于start_date年的年末
答
试试这个(请仔细检查,我没有测试过这个命令) :
UPDATE `ejl_registration` SET `end_date`= CONCAT(YEAR(`start_date`),'-12-31')
WHERE `end_date` IS NULL OR `end_date` = '0000-00-00';
答
我不知道是否DATEADD和DATEDIFF在MySQL存在,但我会强烈建议使用某种日期功能,而不是转换为字符串和操纵他们的方式。
在MS SQL SERVER这会工作...
UPDATE
ejl_registration
SET
end_date = DATEADD(YEAR, 1 + DATEDIFF(YEAR, 0, start_date), 0)
WHERE
(end_date) IS NULL OR (end_date = '0000-00-00')
小错字:END_DATE = '0000-00-00' – Riho 2009-01-21 08:42:38