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  DEFAULT CHARSET=latin1 AUTO_INCREMENT=88668 ;

start_date 和 end_date 的值应如下所示:

  • 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';

关于sql - 更新日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/464425/

相关文章:

sql - 为什么一个简单的 T-SQL UDF 函数会使代码执行速度慢 3 倍

sql - 插入分区表返回违反检查约束但不应该

mysql - 获取最后 9 次出现

java - 从手写持久层迁移到ORM

mysql - sql对行结果进行排名

c# - 使用 64 位有符号值在 SQL 和 C# 中模拟 128 位无符号整数?

php - 在sql php中自动生成id

mysql 不兼容的sql模式

mysql - SQL Concat 和 intvalue

SQL 注入(inject) - 复合语句?