обновление полей DATE - PullRequest
       9

обновление полей DATE

2 голосов
/ 21 января 2009

Я унаследовал базу данных 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 и установки их значения на конец года, равного году начала_даты

Ответы [ 2 ]

3 голосов
/ 21 января 2009

Попробуйте (пожалуйста, проверьте еще раз, я не проверял команду):

UPDATE `ejl_registration` SET `end_date`= CONCAT(YEAR(`start_date`),'-12-31')
WHERE `end_date` IS NULL OR `end_date` = '0000-00-00';
0 голосов
/ 21 января 2009

Я не знаю, существуют ли 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...