Partie I
SQL de base
42
© Éditions Eyrolles
q
Considérés comme numériques dans les formats suivants : YYYYMMDDHHMMSS ou
YYMMDDHHMMSS (pour les DATE YYYYMMDD ou YYMMDD) en supposant que le nombre ait
un sens en tant que date. Ainsi 19650205063000 est interprété comme le 5 février 1965 à
6 heures et 30 minutes. Par contre 19650205069000 n’a pas de sens du fait des minutes (il
sera interprété comme 00000000000000).
Exemple avec DATE et DATETIME
Déclarons la table Pilote qui contient deux colonnes de type date/heure : DATE et DATETIME :
CREATE TABLE Pilote
(brevet VARCHAR(6), nom VARCHAR(20), dateNaiss DATE,
nbHVol DECIMAL(7,2),dateEmbauche DATETIME, compa VARCHAR(4),
CONSTRAINT pk_Pilote PRIMARY KEY(brevet));
L’insertion du pilote initialise la date de naissance au 5 février 1965, ainsi que celle de
l’embauche à la date du moment (heures, minutes, secondes) par la fonction SYSDATE.
INSERT INTO Pilote
VALUES ('PL-1', 'Christian Soutou', '1965-02-05', 900, SYSDATE(), 'AF');
Nous verrons au chapitre 4 comment extraire les années, mois, jours, heures, minutes et
secondes. Nous verrons aussi qu’il est possible d’ajouter ou de soustraire des dates entre elles.
Exemple avec TIME et YEAR
Par analogie aux différents formats des dates, les heures (type TIME 'HH:MM:SS' ou
'HHH:MM:SS') peuvent aussi être manipulées sous la forme de chaînes ou de nombres.
q
Chaîne 'D HH:MM:SS.fraction' avec le nombre de jours (0 à 34) et la fraction de
seconde (pas encore opérationnelle), 'HH:MM:SS.fraction', 'HH:MM:SS', 'HH:MM',
'D HH:MM:SS', 'D HH:MM', 'D HH', ou 'SS'.
q
Chaîne sans les délimiteurs sous réserve que la chaîne ait un sens. Ainsi, '101112' est
considéré comme '10:11:12', mais '109712' est incorrect du fait des minutes, il
devient '00:00:00'.
q
Nombre en raisonnant comme les chaînes. Ainsi 101112 est considéré comme
'10:11:12', mais 109712 est incorrect du fait des minutes, il devient '00:00:00'.
Les formats suivants sont aussi corrects : SS, MMSS, HHMMSS.
La table Pilote suivante contient la colonne pasVolDepuis pour stocker le délai depuis le
dernier vol et la colonne retraite qui indique l’année de retraite.
CREATE TABLE Pilote
(brevet VARCHAR(6), nom VARCHAR(20), pasVolDepuis TIME, retraite YEAR,
CONSTRAINT pk_Pilote PRIMARY KEY(brevet));
Précédent

- 64/418

Suivant