1. Datumtyper
De datatyper som MySQL använder för att lagra datum är:
Datatyp | | Längd i bytes | | Min/Max | | Beskrivning |
YEAR | | 1 | | 1901 till 2155 | | Lagrar ett år. |
DATE | | 3 | | 1000-01-01 till 9999-12-31 | | Lagrar ett datum. |
TIME | | 3 | | -838:59:59 till 838:59:59 | | Lagrar en tidpunkt. |
DATETIME | | 8 | | 1000-01-01 00:00:00 till 9999-12-31 23:59:59 | | Lagrar en tidpunkt med datum och tid. |
TIMESTAMP | | 4 | | 1970-01-01 00:00:00 till mitten av 2037 | | Lagrar en tidpunkt med datum och tid. Datumet uppdateras automatiskt vid varje INSERT eller UPDATE. |
2. Datumtyper och DEFAULT
Om man inte skriver ett explicit värde i en INSERT-sats lagras ett defaultvärde. För alla datumtyper utom TIMESTAMP gäller följande regler (typen TIMESTAMP är lite speciell, eftersom den alltid omvandlar ett NULL-värde till en stämpel):
- En kolumn som har ett explicit defaultvärde lagrar defaultvärdet.
- En kolumn som ej har ett explicit defaultvärde och som kan innehålla NULL, lagrar NULL.
- En kolumn som ej har ett explicit defaultvärde och som ej kan innehålla NULL, lagrar 0.
Nedan ser vi ett exempel på de defaultvärden som genereras om inget värde ges och kolumnerna inte tillåter NULL:
mysql> CREATE TABLE date_default(
year_col year NOT NULL,
date_col DATE NOT NULL,
time_col TIME NOT NULL,
dt_col DATETIME NOT NULL,
stamp_col TIMESTAMP NOT NULL
);
DESC date_default;
+-----------+---------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------------------+-------+
| year_col | year(4) | | | 0000 | |
| date_col | date | | | 0000-00-00 | |
| time_col | time | | | 00:00:00 | |
| dt_col | datetime | | | 0000-00-00 00:00:00 | |
| stamp_col | timestamp(14) | YES | | NULL | |
+-----------+---------------+------+-----+---------------------+-------+
5 rows in set (0.00 sec)
INSERT INTO date_default VALUES ();
Query OK, 1 row affected (0.00 sec)
SELECT * FROM date_default;
+----------+------------+----------+---------------------+----------------+
| year_col | date_col | time_col | dt_col | stamp_col |
+----------+------------+----------+---------------------+----------------+
| 0000 | 0000-00-00 | 00:00:00 | 0000-00-00 00:00:00 | 20040629105015 |
+----------+------------+----------+---------------------+----------------+
1 row in set (0.00 sec)
|
Här kan vi göra följande iaktagelser:
- Alla typer utom TIMESTAMP lagrar faktiskt 0, men de presenterar värdet med en formattering som passar den aktuella typen. DATE visar t.ex. 0 som 0000-00-00.
- TIMESTAMP går inte att deklarera som NOT NULL.
3. YEAR
Denna datatyp lagrar ett årtal i endast en byte. Denna minimala storlek får som följd att datatypen endast kan lagra årtal från 1901 till 2155. Denna typ är lämplig för att lagra (levande) personers födelseår i.
4. DATE
Denna datatyp används för att lagra datum utan tidsangivelse. Datumet måste vara större än 1000-01-01 och mindre än 9999-12-31.
5. TIME
I datatypen TIME kan du lagra ett klockslag eller en summa tid. Den maximala tid som kan lagras är 838:59:59 och den minimala -838:59:59.
6. DATETIME
7. TIMESTAMP