Litérals de date et d’heure
Firebird utilise des expressions abrégées "style C" pour écrire les littéraux de date et d’heure.La représentation en chaîne de la date et de l’heure doit être dans l’un des formats autorisés.
<date_literal> ::= DATE <date> <time_literal> ::= TIME <time> <timestamp_literal> ::= TIMESTAMP <timestamp> <date> ::= [YYYY<p>]MM<p>DD | MM<p>DD[<p>YYYY] | DD<p>MM[<p>YYYY] | MM<p>DD[<p>YY] | DD<p>MM[<p>YY] <time> := HH[:mm[:SS[.NNNN]]] [<time zone>] <timestamp> ::= <date> <time> <time zone> ::= <time zone region> | [+/-] <hour displacement> [: <minute displacement>] <p> ::= whitespace | . | : | , | - | /
Argument | Description |
---|---|
datetime |
Représentation sous forme de chaîne de la date/heure. |
date |
Représentation sous forme de chaîne de la date. |
time |
Représentation sous forme de chaîne de l’heure. |
YYYY |
Une année à quatre chiffres. |
YY |
Les deux derniers chiffres de l’année (00-99). |
MM |
Mois. Peut contenir 1 ou 2 chiffres (1-12 ou 01-12). Comme un mois, il est également permis de spécifier une abréviation de trois lettres ou le nom complet du mois en anglais, le cas n’a pas d’importance. |
DD |
Jour. Peut contenir 1 ou 2 chiffres (1-31 ou 01-31). |
HH |
Heure. Peut contenir 1 ou 2 chiffres (0-23 ou 00-23). |
mm |
Minute. Peut contenir 1 ou 2 chiffres (0-59 ou 00-59). |
SS |
Seconde.Peut contenir 1 ou 2 chiffres (0-59 ou 00-59). |
NNNN |
Dix millièmes de seconde. Peut contenir de 1 à 4 chiffres (0-9999). |
p |
Le séparateur, tous les caractères autorisés, les espaces de début et de fin sont ignorés. |
time zone region |
Un des fuseaux horaires associés à la région. |
hour displacement |
Le décalage horaire de l’horloge est relatif à GMT. |
minute displacement |
Décalage horaire des minutes par rapport à GMT. |
Règles :
-
Dans le format Année-Mois-Jour, l’année doit nécessairement contenir 4 chiffres ;
-
Pour les dates au format fin d’année, si un point "." est utilisé comme séparateur de date, la date est interprétée comme Jour-Mois-Année, pour les autres séparateurs, elle est interprétée comme Mois-Jour-Année ;
-
Si une année n’est pas spécifiée, l’année en cours est prise comme année ;
-
Si seulement deux chiffres de l’année sont spécifiés, Firebird utilise un algorithme de fenêtre glissante pour obtenir le siècle. La tâche consiste à interpréter la valeur de l’année à deux chiffres comme étant la plus proche de l’année en cours dans l’intervalle des 50 années précédentes et suivantes ;
-
S’il y a un fuseau horaire ou un décalage horaire dans la représentation temporelle de la chaîne, le type littéral sera WITH TIME ZONE, sinon WITHOUT TIME ZONE ;
-
Si aucun élément de temps n’est spécifié, il est supposé être égal à 0.
Tip
|
Nous recommandons vivement de n’utiliser que des formulaires comportant l’année complète à 4 chiffres dans les littéraux de date afin d’éviter toute confusion. |
SELECT
date '04.12.2014' AS d1, -- DD.MM.YYYY
date '12-04-2014' AS d2, -- MM-DD-YYYY
date '12/04/2014' AS d3, -- MM/DD/YYYY
date '04.12.14' AS d4, -- DD.MM.YY
-- DD.MM est considéré comme l'année en cours
date '04.12' AS d5,
-- MM/DD est considéré comme l'année en cours
date '12/4' AS d6,
date '2014/12/04' AS d7, -- YYYY/MM/DD
date '2014.12.04' AS d8, -- YYYY.MM.DD
date '2014-12-04' AS d9, -- YYYY-MM-DD
time '11:37' AS t1, -- HH:mm
time '11:37:12' AS t2, -- HH:mm:ss
time '11:31:12.1234' AS t3, -- HH:mm:ss.nnnn
-- HH:mm:ss.nnnn +hh
time '11:31:12.1234 +03' AS t4,
-- HH:mm:ss.nnnn +hh:mm
time '11:31:12.1234 +03:30' AS t5,
-- HH:mm:ss.nnnn tz
time '11:31:12.1234 Europe/Moscow' AS t5,
-- HH:mm tz
time '11:31 Europe/Moscow' AS t6,
-- DD.MM.YYYY HH:mm
timestamp '04.12.2014 11:37' AS dt1,
-- MM/DD/YYYY HH:mm:ss
timestamp '12/04/2014 11:37:12' AS dt2,
-- DD.MM.YYYY HH:mm:ss.nnnn
timestamp '04.12.2014 11:31:12.1234' AS dt3,
-- YYYY-MM-DD HH:mm:ss.nnnn +hh:mm
timestamp '2014-12-04 11:31:12.1234 +03:00' AS dt4,
-- DD.MM.YYYY HH:mm:ss.nnnn tz
timestamp '04.12.2014 11:31:12.1234 Europe/Moscow' AS dt5
FROM rdb$database
Note
|
Notez que ces expressions abrégées sont évaluées immédiatement lors de l’analyse syntaxique (préparation d’une requête ou compilation d’une procédure, d’une fonction ou d’un déclencheur). Avant Firebird 4.0, les expressions abrégées étaient également autorisées pour les chaînes de caractères spéciales 'NOW', 'TODAY', 'TOMORROW', 'YESTERDAY'. L’utilisation de telles expressions dans le langage PSQL compilé aurait pour effet de "geler" la valeur au moment de la compilation et de renvoyer une valeur non valide.Par conséquent, dans Firebird 4.0, les expressions abrégées pour de tels littéraux de chaîne sont interdites, mais vous pouvez les utiliser pour les conversions de type CAST. |