Fonction SQL DATE & TIME

Voici la liste des fonctions de manipulation de date et d’heure couramment utilisées :

FonctionLa descriptionExemple
CHARRenvoie une représentation sous forme de chaîne de son premier argument.CHAR(client_embauchedate,États-Unis)
DAYSRenvoie une représentation entière de son argument.DAYS(‘2008-01-01’)
YEARRenvoie la partie année de son argumentYEAR(client_embauchedate)
MONTHRenvoie la partie mois de son argumentMONTH(client_embauche)
DAYRenvoie la partie jour de son argumentDAY(client_embauchedate)
HOURRenvoie la partie heure de son argumentHOUR(CURRENT TIME)
MINUTERenvoie la partie minute de son argumentMINUTES (CURRENT TIME)
SECONDRenvoie la partie minute de son argumentSECOND(CURRENT TIME)
MICROSECONDRenvoie la partie microseconde de son argumentMICROSECOND(CURRENT TIMESTAMP)
DATERenvoie la date dérivée de son argumentDATE(‘2008-01-01’)
TIMERenvoie le temps dérivé de son argumentTIME(’13:00:00′)
TIMESTAMPRenvoie timestamp dérivé de son argumentTIMESTAMP(CURRENT DATE)

Voyons les exemples ci-dessous,

Exemple 1:

Comment obtenir la date, l’heure et l’horodatage actuels ?

SELECT current date FROM sysibm.sysdummy1;
SELECT current time FROM sysibm.sysdummy1;
SELECT current timestamp FROM sysibm.sysdummy1;

Exemple 2 :

Comment obtenir l’année, le mois, le jour, l’heure, les minutes, les secondes et les microsecondes à partir de timestamp actuel ?

SELECT YEAR (current timestamp) FROM sysibm.sysdummy1;
SELECT MONTH (current timestamp) FROM sysibm.sysdummy1;
SELECT DATE (current timestamp) FROM sysibm.sysdummy1;
SELECT TIME (current timestamp) FROM sysibm.sysdummy1;
SELECT DAY (current timestamp) FROM sysibm.sysdummy1;
SELECT HOUR (current timestamp) FROM sysibm.sysdummy1;
SELECT MINUTE (current timestamp) FROM sysibm.sysdummy1;
SELECT SECOND (current timestamp) FROM sysibm.sysdummy1;
SELECT MICROSECOND (current timestamp) FROM sysibm.sysdummy1;

Exemple 3 :

Comment effectuer des calculs de date et d’heure ?

SELECT current date + 2 YEAR FROM sysibm.sysdummy1;
SELECT current date + 1 YEARS + 10 MONTHS FROM sysibm.sysdummy1;
SELECT current date + 1 YEARS + 5 MONTHS + 10 DAYS FROM sysibm.sysdummy1;
SELECT current time + 5 HOURS ‑ 3 MINUTES + 10 SECONDS FROM sysibm.sysdummy1;

Exemple 4 :

Comment trouver le nombre de jours entre deux dates, vous pouvez soustraire des dates comme ci-dessous :

SELECT days (current date) ‑ days (date('1990‑09-02')) 
  FROM sysibm.sysdummy1;

Exemple 5 :

Si vous souhaitez concaténer des valeurs de date ou d’heure avec un autre texte, vous devez d’abord convertir la valeur en une chaîne de caractères. Pour ce faire, vous pouvez simplement utiliser la fonction CHAR() :

SELECT "Current Date -" || char(current date) 
  FROM sysibm.sysdummy1;
SELECT "Current Time -" || char(current time) 
  FROM sysibm.sysdummy1;
SELECT "Current Date with 12 hours -" char(current date + 10 hours) 
  FROM sysibm.sysdummy1;

Exemple 6 :

Si vous souhaitez convertir une chaîne de caractères en une valeur de date ou d’heure, vous pouvez utiliser comme ci-dessous :

SELECT TIMESTAMP ('1990‑09‑02‑12.00.00.000000') FROM sysibm.sysdummy1;
SELECT TIMESTAMP ('1990‑09‑02 12:00:00') FROM sysibm.sysdummy1;
SELECT DATE ('1990‑09‑02') FROM sysibm.sysdummy1;
SELECT DATE ('02/09/1990') FROM sysibm.sysdummy1;
SELECT TIME ('10:00:00') FROM sysibm.sysdummy1;
SELECT TIME ('10.00.00') FROM sysibm.sysdummy1;

Exemple 7 :

Comment changer le format date/heure ? Voyons le formatage de la date dans différents formats.

SELECT
    CHAR(DATE (CURRENT TIMESTAMP),ISO) AS date_en_iso,
    CHAR(DATE (CURRENT TIMESTAMP),USA) AS date_en_usa,
    CHAR(DATE (CURRENT TIMESTAMP),EUR) AS date_en_eur,
    CHAR(DATE (CURRENT TIMESTAMP),JIS) AS date_en_jis
FROM sysibm.sysdummy1;
Résultat:
Nom de colonneValeur
date_en_iso2022-09-02
date_en_usa2022/09/02
date_en_eur2022.09.02
date_en_jis2022.09.02

Exemple 8 :

Voyons comment convertir le format de date à l’aide de la fonction VARCHAR_FORMAT.

SELECT
    VARCHAR_FORMAT(CURRENT TIMESTAMP,'YYYY-MM-DD') AS VCHAR_FORMATE,
    DATE(CURRENT TIMESTAMP) AS DATE_VALEUR
FROM sysibm.sysdummy1;
Résultat:
VCHAR_FORMATEDATE_VALEUR
2013-04-1104/11/2013

Exemple 9 :

L’instruction SQL suivante montre comment utiliser la fonction VARCHAR_FORMAT dans la clause where.

SELECT * FROM Employe_table
    WHERE VARCHAR_FORMAT (date_col,'YYYY-MM-DD') = '1990-09-02'

Les autres fonctions importantes de date et d’heure sont les suivantes :

  • DAYNAME : renvoie une chaîne de caractères à casse mixte contenant le nom du jour (par exemple, vendredi) pour la partie jour de l’argument.
  • DAYOFWEEK : renvoie le jour de la semaine dans l’argument sous la forme d’une valeur entière comprise entre 1 et 7, où 1 représente le dimanche.
  • DAYOFWEEK_ISO : renvoie le jour de la semaine dans l’argument sous la forme d’une valeur entière comprise entre 1 et 7, où 1 représente le lundi.
  • DAYOFYEAR : renvoie le jour de l’année dans l’argument sous la forme d’une valeur entière comprise entre 1 et 366.
  • JULIAN_DAY : renvoie une valeur entière représentant le nombre de jours entre le 1er janvier 4712 av. J.-C. (le début du calendrier julien) et la valeur de date spécifiée dans l’argument.
  • MIDNIGHT_SECONDS : renvoie une valeur entière comprise entre 0 et 86 400 représentant le nombre de secondes entre minuit et la valeur d’heure spécifiée dans l’argument.
  • MONTHNAME : renvoie une chaîne de caractères à casse mixte contenant le nom du mois (par exemple, janvier) pour la partie mois de l’argument.
  • TIMESTAMP_ISO : renvoie une valeur d’horodatage basée sur la date, l’heure ou l’argument d’horodatage.
  • TIMESTAMP_FORMAT : renvoie un horodatage à partir d’une chaîne de caractères qui a été interprétée à l’aide d’un modèle de caractères.
  • TIMESTAMPDIFF : renvoie une estimation du nombre d’intervalles du type défini par le premier argument, basé sur la différence entre deux horodatages.
  • TO_CHAR : renvoie une représentation sous forme de caractères d’un horodatage qui a été formaté à l’aide d’un modèle de caractères. TO_CHAR est un synonyme de VARCHAR_FORMAT.
  • TO_DATE : renvoie un horodatage à partir d’une chaîne de caractères qui a été interprétée à l’aide d’un modèle de caractères. TO_DATE est un synonyme de TIMESTAMP_FORMAT.
  • SEMAINE : Renvoie la semaine de l’année de l’argument sous la forme d’une valeur entière comprise entre 1 et 54. La semaine commence par le dimanche.
  • WEEK_ISO : renvoie la semaine de l’année de l’argument sous la forme d’une valeur entière comprise entre 1 et 53.