FirebirdSQL logo
 Structure du langage SQLÉléments communs du langage 

Opérations utilisant les valeurs de date et d’heure

En raison de la manière dont la date et l’heure sont stockées avec ces types, il est possible d’effectuer des opérations arithmétiques pour soustraire une date (heure) antérieure d’une date (heure) ultérieure.La date est représentée par le nombre de jours depuis la "date zéro" - le 17 novembre 1858.Le temps est représenté par le nombre de secondes (décimales comprises) écoulées depuis minuit.

Table 1. Opérations arithmétiques pour les types de données date et heure
Opérande 1 Opérateur Opérande 2 Résultat

DATE

+

TIME

TIMESTAMP

DATE

+

TIME WITH TIME ZONE

TIMESTAMP WITH TIME ZONE

DATE

+

Valeur numérique n

DATE, augmenté de n jours entiers (la partie fractionnaire est ignorée).

TIME

+

DATE

TIMESTAMP

TIME WITH TIME ZONE

+

DATE

TIMESTAMP WITH TIME ZONE

TIME

+

Valeur numérique n

TIME, augmenté de n secondes (nombre de parties fractionnaires).

TIME WITH TIME ZONE

+

Valeur numérique n

TIME WITH TIME ZONE, augmenté de n secondes (nombre de parties fractionnaires).

TIMESTAMP

+

Valeur numérique n

TIMESTAMP, où la date sera augmentée du nombre de jours et de la partie du jour représentée par le nombre n - donc “+ 2.75” avancera la date de 2 jours et 18 heures.

TIMESTAMP WITH TIME ZONE

+

Valeur numérique n

TIMESTAMP WITH TIME ZONE, où la date sera augmentée du nombre de jours et de la partie du jour représentée par le nombre n - donc “+ 2.75” avancera la date de 2 jours et 18 heures.

DATE

-

DATE

Nombre de jours dans l’intervalle comme DECIMAL (9, 0).

DATE

-

Valeur numérique n

DATE, réduit de n jours entiers (la partie fractionnaire est ignorée).

TIME

-

TIME

Le nombre de secondes dans l’intervalle comme DECIMAL (9, 4).

TIME

-

n

TIME, réduit de n secondes (nombre de parties fractionnaires).

TIME

-

TIME WITH TIME ZONE

La valeur sans fuseau horaire est convertie en WITH TIME ZONE dans le fuseau horaire de la session en cours.Le nombre de secondes entre les valeurs UTC est renvoyé comme suit DECIMAL(9, 4).La même règle s’applique lorsque l’ordre des opérandes est modifié.

TIME WITH TIME ZONE

-

TIME WITH TIME ZONE

Le nombre de secondes entre les valeurs UTC est renvoyé comme suit DECIMAL(9, 4).

TIMESTAMP

-

TIMESTAMP

Nombre de jours et de parties d’un jour dans un intervalle comme DECIMAL (18, 9).

TIMESTAMP

-

TIMESTAMP WITH TIME ZONE

La valeur sans fuseau horaire est convertie en WITH TIME ZONE dans le fuseau horaire de la session en cours.Le nombre de jours et de parties de la journée entre les valeurs UTC en tant que DECIMAL (18, 9).La même règle s’applique lorsque l’ordre des opérandes est modifié.

TIMESTAMP

-

n

TIMESTAMP, où la date sera réduite par le nombre de jours, et la partie du jour représentée par le nombre n - ainsi “`- 2.25`” reculera la date de 2 jours et 6 heures.

TIMESTAMP WITH TIME ZONE

-

n

TIMESTAMP WITH TIME ZONE, où la date sera réduite par le nombre de jours, et la partie du jour représentée par le nombre n - ainsi “`- 2.25`” reculera la date de 2 jours et 6 heures.

Une valeur de date/heure peut être soustraite de l’autre si :

  • Les deux valeurs sont du même type de date/heure ;

  • Le premier opérande est plus récent que le deuxième opérande.

Note

Dans le dialecte 1, le type DATE est traité comme TIMESTAMP.

Fonctions supplémentaires pour le support des fuseaux horaires

Firebird 4 offre un certain nombre de fonctionnalités pour les informations sur les fuseaux horaires.

Table virtuelle RDB$TIME_ZONES

Une table virtuelle avec une liste des fuseaux horaires supportés par Firebird.

Voir aussi RDB$TIME_ZONES dans l’annexe "Tableaux du système".

Paquet RDB$TIME_ZONE_UTIL

Le paquet RDB$TIME_ZONE_UTIL contient des procédures et des fonctions pour travailler avec les fuseaux horaires.

Vous trouverez une description détaillée du paquetage dans la section RDB$TIME_ZONE_UTIL du chapitre Paquetages système.