MySQL Вставка неверных дат - PullRequest
1 голос
/ 25 августа 2009

снова, этот qn был из практики qns в руководстве по сертификации 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. а на экзамене что мне ответить?

Ответы [ 4 ]

2 голосов
/ 25 августа 2009

Вы можете прочитать раздел Ограничения на неверные данные . К сожалению, это не дает прямого ответа на ваш вопрос. В нем говорится: «Если дата совершенно неправильная (за пределами возможности сервера ее хранить), в столбце вместо этого сохраняется специальное« нулевое »значение даты« 0000-00-00 ». т невозможно ...

1 голос
/ 25 августа 2009

Обнаружено, что это сообщение об ошибке. Официальный ответ: вы можете это сделать, но это не поддерживается, и вы сами по себе.

0 голосов
/ 25 августа 2009

Mysql Диапазон дат: от 1000-01-01 до 9999-12-31 (ref)

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

.
0 голосов
/ 25 августа 2009

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

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