2009-08-25 13 views
1

wieder war dies qn aus der Praxis qns in dem mysql-Zertifizierung Reiseführer ...MySQL Einfügen ungültiges Datum

FRAG

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. 

ANTWORT

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

wenn Ich habe versucht, '999-12-31' in ein Datum einzufügen, das ich 0999-12-31 bekomme. Ich habe gelesen, wo in der Zertifizierung Leitfaden, dass MySQL in der Lage sein kann, Daten aus dem Bereich 1000-01-01 bis 9999-12-31 einfügen. aber in der prüfung was antworte ich?

Antwort

1

Die offizielle Antwort ist, dass Sie es tun können, aber es wird nicht unterstützt, und Sie sind auf eigene Faust.

0

Prüfungen und das wirkliche Leben sind verschiedene Dinge. Es ist schwierig, deine Meinung zu beweisen, wenn im Buch ein anderer geschrieben hat. Aber ich würde antworten, dass ich selbst getestet habe.

2

Sie können die Constraints on Invalid Data Abschnitt lesen. Leider gibt es keine direkte Antwort auf Ihre Frage. Er sagt: "Wenn das Datum völlig falsch ist (außerhalb der Fähigkeit des Servers, es zu speichern), wird stattdessen der spezielle" Null "-Datumswert '0000-00-00' in der Spalte gespeichert.", Und ich würde sagen, dass 0999 gespeichert wird. t unmöglich ...

0

Mysql Datumsbereich: 1000.01.01 bis 9999-12-31 (ref)

Hier können Sie versuchen, '999-12-31' einzufügen. Da dieses Datum nicht im obigen Bereich liegt, setzt mysql den Wert auf 0

Verwandte Themen