Voici la liste des fonctions de manipulation de date et d’heure couramment utilisées :
Fonction | La description | Exemple |
---|---|---|
CHAR | Renvoie une représentation sous forme de chaîne de son premier argument. | CHAR(client_embauchedate,États-Unis) |
DAYS | Renvoie une représentation entière de son argument. | DAYS(‘2008-01-01’) |
YEAR | Renvoie la partie année de son argument | YEAR(client_embauchedate) |
MONTH | Renvoie la partie mois de son argument | MONTH(client_embauche) |
DAY | Renvoie la partie jour de son argument | DAY(client_embauchedate) |
HOUR | Renvoie la partie heure de son argument | HOUR(CURRENT TIME) |
MINUTE | Renvoie la partie minute de son argument | MINUTES (CURRENT TIME) |
SECOND | Renvoie la partie minute de son argument | SECOND(CURRENT TIME) |
MICROSECOND | Renvoie la partie microseconde de son argument | MICROSECOND(CURRENT TIMESTAMP) |
DATE | Renvoie la date dérivée de son argument | DATE(‘2008-01-01’) |
TIME | Renvoie le temps dérivé de son argument | TIME(’13:00:00′) |
TIMESTAMP | Renvoie timestamp dérivé de son argument | TIMESTAMP(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 colonne | Valeur |
---|---|
date_en_iso | 2022-09-02 |
date_en_usa | 2022/09/02 |
date_en_eur | 2022.09.02 |
date_en_jis | 2022.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_FORMATE | DATE_VALEUR |
---|---|
2013-04-11 | 04/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.