Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新日期字段_Sql - Fatal编程技术网

Sql 更新日期字段

Sql 更新日期字段,sql,Sql,我继承了MYSQL数据库,它有很多表,其中包含 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

我继承了MYSQL数据库,它有很多表,其中包含

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 ;
开始日期和结束日期应具有如下值:

  • 2007-1-52007-12-31
  • 2008-1-112008-12-31
  • 2009-1-152009-12-31
但其中一些en_日期字段要么为空,要么为0000-00-00。 是否有一种方法可以让单个查询更新所有那些无效的en_日期字段,并将其值设置为年末等于开始日期的年份(请仔细检查,我没有测试该命令):


我不知道MySQL中是否存在DATEADD和DATEDIFF,但我强烈建议使用某种日期函数,而不是转换为字符串并以这种方式操作它们

在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'
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')