2009-08-25 4 views
1

снова, это дп был из практики QNS в MySQL сертификации путеводителя ...MySQL Вставка недействительные даты

ВОПРОС

Here's the structure of a table typetest with three columns (number, string, and dates). As- sume the server is running in MySQL's “forgiving” SQL mode. 

mysql> DESCRIBE typetest; 
+--------+---------------------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+--------+---------------------+------+-----+---------+-------+ 
| number | tinyint(3) unsigned | YES | | NULL | | 
+--------+---------------------+------+-----+---------+-------+ 

You perform the following INSERT operation on table typetest: 

INSERT INTO typetest VALUES (1000,'yoodoo','999-12-31'); 

What data values will actually be stored in the table? Provide a short explanation. 

ОТВЕТ

+--------+--------+------------+ 
| number | string | dates | 
+--------+--------+------------+ 
| 255 | yoodo | 0000-00-00 | 
+--------+--------+------------+ 

The inserted number 1000 is too big to fit in the TINYINT UNSIGNED column, so the highest pos- sible value (255) is inserted. 'yoodoo' is too long for a CHAR(5) column and is thus truncated to five characters. '999-12-31' is a date that is earlier than the earliest possible DATE value ('1000-01-01'). This is interpreted as an invalid date, so the “zero” date is stored. 

когда Я попытался вставить «999-12-31» в дату, я получаю 0999-12-31. Я читаю, где в руководстве по сертификации, что mysql может вставлять даты из диапазона от 1000-01-01 до 9999-12-31. но на экзамене, что я отвечаю?

ответ

0

Экзамены и реальная жизнь - это разные вещи. Трудно доказать ваше мнение, если в книге выдается другое. Но я бы ответил, что проверял сам.

2

Вы можете прочитать раздел Constraints on Invalid Data. К сожалению, он не дает прямого ответа на ваш вопрос. В нем говорится: «Если дата совершенно неверна (за пределами способности сервера хранить ее), специальное« ноль »значение даты« 0000-00-00 »сохраняется вместо столбца.», И я бы сказал, что хранение 0999 isn ' т невозможно ...

0

Mysql Диапазон дат: 1000-01-01 до 9999-12-31 (ссылка)

Здесь вы пытаетесь вставить '999-12-31'. Поскольку эта дата не находится в вышеуказанном диапазоне, mysql по умолчанию принимает значение 0

Смежные вопросы