2009-08-25 6 views
1

à nouveau, ce qn était de la qns pratique dans le guide de certification MySQL ...MySQL Insertion dates non valides

QUESTION

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. 

RÉPONSE

+--------+--------+------------+ 
| 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. 

quand J'ai essayé d'insérer '999-12-31' dans une date que j'obtiens 0999-12-31. J'ai lu quelque part où dans le guide de certification que mysql peut être en mesure d'insérer des dates hors de la gamme 1000-01-01 à 9999-12-31. mais à l'examen, qu'est-ce que je réponds?

Répondre

0

Les examens et la vie réelle sont des choses différentes. Il est difficile de prouver votre opinion, si dans le livre a écrit un autre. Mais je répondrais que j'ai testé par moi-même.

2

Vous pouvez lire la section Constraints on Invalid Data. Malheureusement, il ne donne pas une réponse directe à votre question. Il dit "Si la date est totalement fausse (en dehors de la capacité du serveur à le stocker), la valeur de date" zéro "spéciale '0000-00-00' est stockée dans la colonne à la place.", Et je dirais que stocker 0999 isn ' t impossible ...

0

Mysql Période: 01/01/1000 à 9999-12-31 (ref)

ici, vous essayez d'insérer '999-12-31'. Puisque cette date n'est pas dans la plage ci-dessus, mysql affiche par défaut la valeur 0

Questions connexes