FirebirdSQL logo

Exemple DATEADD

Example 1. Utilisation de la fonction DATEADD
DATEADD (28 DAY TO CURRENT_DATE)
DATEADD (-6 HOUR TO CURRENT_TIME)
DATEADD (MONTH, 9, DATEOFCONCEPTION)
DATEADD (-38 WEEK TO DATEOFBIRTH)
DATEADD (MINUTE, 90, CAST('NOW' AS TIME))
DATEADD (? YEAR TO DATE '11-SEP-1973')
SELECT
  CAST(DATEADD(-1 * EXTRACT(MILLISECOND FROM ts) MILLISECOND TO ts) AS VARCHAR(30)) AS t,
  EXTRACT(MILLISECOND FROM ts) AS ms
FROM (
    SELECT TIMESTAMP'2014-06-09 13:50:17.4971' as ts
    FROM RDB$DATABASE
) a
T                             MS
------------------------------------
2014-06-09 13:50:17.0000	497.1

DATEDIFF()

Disponible en

DSQL, PSQL

Syntaxe
DATEDIFF (<args>)

<args> ::= <unit> FROM <moment_1> TO <moment_2>
         | <unit>, <moment_1>, <moment_2>

<unit> ::=
    YEAR | MONTH | WEEK | DAY | WEEKDAY | YEARDAY
  | HOUR | MINUTE | SECOND | MILLISECOND
Table 1. paramètres de fonction DATEDIFF
Paramètre Description

unit

Composante date/heure.

monent_1

Une expression de type DATE, TIME ou TIMESTAMP.

monent_2

Une expression de type DATE, TIME ou TIMESTAMP.

Le type de résultat renvoyé :

BIGINT

La fonction DATEDIFF renvoie le nombre d’années, de mois, de semaines, de jours, d’heures, de minutes, de secondes ou de millisecondes entre deux valeurs de date/heure.

Caractéristiques d’utilisation :

  • Les paramètres DATE et TIMESTAMP peuvent être utilisés ensemble. La co-utilisation du type TIME avec le type DATE et TIMESTAMP n’est pas autorisée ;

  • Avec un argument de type TIMESTAMP et DATE, n’importe quel composant date/heure <unit> peut être utilisé ;

  • Seuls HOUR, MINUTE, SECOND et MILLISECOND peuvent être utilisés pour le type de données TIME.

Note
  • La fonction DATEDIFF ne vérifie pas les différences dans les composants de date/heure plus petits que ceux spécifiés dans le premier argument <unit>. Le résultat est :

    • DATEDIFF (YEAR, DATE '1-JAN-2009', DATE '31-DEC-2009') retournera 0, mais

    • DATEDIFF (YEAR, DATE '31-DEC-2009', DATE '1-JAN-2010') retournera 1

  • Cependant, pour les plus petits composants de date/heure, nous avons :

    • DATEDIFF (DAY, DATE '26-JUN-1908', DATE '11-SEP-1973') retournera 23818

    • DATEDIFF (DAY, DATE '30-NOV-1971', DATE '8-JAN-1972') retourne 39

  • Une valeur négative de la fonction indique que la date/heure du moment_2 est inférieure à celle du moment_1.

Exemple DATEDIFF

Example 1. Utilisation de la fonction DATEDIFF
DATEDIFF (HOUR FROM CURRENT_TIMESTAMP TO TIMESTAMP '12-JUN-2059 06:00')
DATEDIFF (MINUTE FROM TIME '0:00' TO CURRENT_TIME)
DATEDIFF (MONTH, CURRENT_DATE, DATE '1-1-1900')
DATEDIFF (DAY FROM CURRENT_DATE TO CAST (? AS DATE))

EXTRACT()

Disponible en

DSQL, PSQL

Syntaxe
EXTRACT (<part> FROM <datetime>)

<part> ::=
    YEAR | MONTH | WEEK | DAY | WEEKDAY | YEARDAY
  | HOUR | MINUTE | SECOND | MILLISECOND
  | TIMEZONE_HOUR | TIMEZONE_MINUTE
Table 1. paramètres de fonction EXTRACT
Paramètre Description

part

Composante date/heure.

datetime

Une expression de type DATE, TIME ou TIMESTAMP.

Le type de résultat renvoyé :

SMALLINT ou NUNERIC.

La fonction EXTRACT extrait les composants de date et d’heure des types de données DATE, TIME et TIMESTAMP.

Table 2. Types et plages de résultats de fonctions EXTRACT
Composant date/heure Type Plage Commentaire

YEAR

SMALLINT

1–9999

L’année

QUARTER

SMALLINT

1-4

Trimestre

MONTH

SMALLINT

1–12

Mois

WEEK

SMALLINT

1–53

Numéro de la semaine de l’année

DAY

SMALLINT

1–31

Jour

WEEKDAY

SMALLINT

0–6

Jour de la semaine. 0 — Dimanche

YEARDAY

SMALLINT

0–365

Le numéro du jour de l’année. 0 = 1 janvier

HOUR

SMALLINT

0–23

Heure

MINUTE

SMALLINT

0–59

Minute

SECOND

NUMERIC(9,4)

0.0000–59.9999

Secondes. Inclut les millisecondes

MILLISECOND

NUMERIC(9,1)

0.0–999.9

Millisecondes

TIMEZONE_HOUR

SMALLINT

de -14 à +14

Décalage des heures du fuseau horaire

TIMEZONE_MINUTE

SMALLINT

de -59 à +59

Décalage des minutes du fuseau horaire

Note

Si le composant date/heure n’est pas présent dans l’argument date/heure, par exemple SECOND dans un argument de type DATE ou YEAR dans TIME, la fonction provoquera une erreur.

À partir d’un argument de type DATE ou TIMESTAMP, vous pouvez extraire le numéro de la semaine. Selon la norme ISO-8601, la semaine commence le lundi et comprend toujours 7 jours. La première semaine de l’année est celle qui compte le plus de jours dans la nouvelle année (au moins 4) : les jours 1-3 peuvent appartenir à la semaine précédente (52 ou 53) de l’année précédente. Par analogie, les jours 1-3 de l’année en cours peuvent appartenir à la semaine 1 de l’année suivante.

Example 1. Utilisation de la fonction EXTRACT
/* récupérer le numéro du trimestre par la date */
SELECT (EXTRACT(MONTH FROM CURRENT_TIMESTAMP)-1)/3+1
FROM RDB$DATABASE