Проблема при обновлении даты в таблице БД - PullRequest
1 голос
/ 08 января 2012

Я работаю над проектом 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?

Ответы [ 2 ]

5 голосов
/ 08 января 2012

2012-14-01 первый день четырнадцатого месяца :)

(таким образом, его недопустимая дата, таким образом, приведенная к 0000-00-00 и Data truncated for column 'end_date' at row 1 предупреждение было возвращено mysql, что можно увидеть, запросив SHOW WARNINGS к mysql сразу после запроса с плохим поведением)

2012-01-14 - 14 января.

1 голос
/ 08 января 2012

используйте это:

 UPDATE `Customer` SET `end_date` = date('Y-m-d') WHERE `customer_id` = '18';

Используйте функцию даты для обновления этого поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...