Il est essentiel de connaître la date et l’heure surtout quand vous traitez des données avec le langage SQL. Pour cela, il existe plusieurs fonctions qui permettent de manipuler des données à des heures et des dates précises. Vous allez découvrir dans cet article les différentes fonctions pour manipuler les dates et l’heure.

Type de données de SQL date

MySQL

Voici une liste de différents types de données fournie avec MySQL permettant de stocker une date dans une base de données :

  • DATE- format AAAA-MM-JJ
  • DATETIME- format : AAAA-MM-JJ HH:MI:SS
  • TIMESTAMP- format : AAAA-MM-JJ HH:MI:SS
  • YEAR- format AAAA ou AA

SQL Server

Il existe également plusieurs types de données permettant le stockage de date ou valeur date/heure dans la base de données si l’on utilise SQL Server.

  • DATE- format AAAA-MM-JJ
  • DATETIME- format : AAAA-MM-JJ HH:MI:SS
  • SMALLDATETIME- format : AAAA-MM-JJ HH:MI:SS
  • TIMESTAMP- format : un numéro unique

Note : Il faut garder à l’esprit que les types de dates sont choisis lorsque vous créez votre colonne. 

Première requête avec SQL Date

Dans cet exemple, nous allons nous servir de la table suivante :

table-sql-liste

Pour cette première requête, nous allons récupérer les données dont la date est égale à “2022-03-08”. Pour ce faire, il faut taper cette ligne :

SELECT * FROM ‘liste’ WHERE date=’2022-03-08’

Le résultat ressemblera à ceci : 

select-where-date-sql

Les différentes fonctions de manipulation de SQL date

En SQL, la manipulation des dates lorsque l’on est un débutant n’est pas une tâche facile. La raison est que le format de la date de votre table doit être le même que celui de la date d’entrée des données. Généralement, au lieu d’utiliser le format Date, on utilise plutôt DateTime. Dans cette partie, nous allons voir les différentes fonctions pour manipuler la date.

Fonctions générales

table-sql-echan

DATE()

La fonction DATE() renvoie uniquement la partie date des éléments présents dans la colonne spécifiée. Sa syntaxe est la suivante :

SELECT DATE (Nom_colonne) FROM nom_tableau;
select-date()

NOW()

Cette fonction renvoie la date et heure actuelle au format YYYYMMDDHHMMSS ou AAA-MM-JJ:HH:SS. Pour obtenir cela, il faut taper la requête suivante :

SELECT now();
select-now()

CURDATE()

Cette fonction renvoie la date actuelle au format YYYYMMDD ou AAA-MM-JJ. La syntaxe est la suivante :

SELECT CURDATE();
select-curdate()

CURTIME()

Cette fonction renvoie à l’heure actuelle au format HHMMSS ou HH-MM-SS. Voici sa syntaxe :

SELECT CURTIME();
select-curtime()

DATE_ADD(date, INTERVAL expr type)

Avec cette fonction, vous avez la possibilité d’ajouter un intervalle de temps à une date. Vous pouvez par exemple ajouter une microseconde, une seconde, une heure, un jour, une semaine, une année, etc.

SELECT DATE_ADD(DATE_debut, INTERVAL 10 YEARS) FROM echan
select-add

DATE_SUB(date, INTERVAL expr type)

Ici, vous avez la possibilité de soustraire un intervalle de temps à une date. Vous pouvez ajouter une microseconde, une seconde, une heure, un jour, une semaine, une année, etc. comme dans la fonction précédente.

SELECT DATE_SUB(DATE_debut, INTERVAL 10 YEARS) FROM echan
select-sub()

DATEDIFF(date1,date2)

Cette fonction permet de déterminer le nombre de jours entre deux dates distinctes.

SELECT DATEDIFF(NOW(), Date_debut) AS "Nombre jours passés" FROM echan;
select-datediff()

Fonctions permettant de retourner des parties de date et d’heure

DATEPART()

La syntaxe utilisée dans cette fonction est la suivante :

DATEPART( datepart,  date )

Cette fonction donne en retour un entier qui spécifie la partie d’une date. L’argument datepart spécifie la partie de la date que la fonction doit retourner. Voici la liste de tous les arguments datepart valide :

datepartAbréviations
yearyy, yyyy
quarterqq, q
monthmm, m
dayofyeardy, y
daydd, d
weekwk, ww
weekdaydw
hourhh
minutemi, n
secondss, s
millisecondms
microsecondmcs
nanosecondns
tzoffsettz
iso_weekisowk, isoww

Prenons l’exemple ci-dessous :

SELECT DATEPART(ww,'2022-03-3012:15:32.1234567 +05:10');
select-datepart()

Ici, la fonction renvoie le nombre de semaines depuis janvier qui est 14.

Voici les résultats pour les autres arguments :

datepartValeur retournée
year, yyyy, yy2022
quarter, qq, q4
month, mm, m03
dayofyear, dy, y303
day, dd, d30
week, wk, ww44
weekday, dw3
hour, hh12
minute, n15
second, ss, s32
millisecond, ms123
microsecond, mcs123456
nanoosecond, ns123456700
tzoffset, tz310
iso_week, isowk, isoww44

DATENAME()

Voici la syntaxe de cette fonction :

DATENAME( datepart,  date )

Cette fonction donne en retour une chaîne de caractère qui spécifie la partie d’une date. L’argument datepart spécifie la partie de la date que la fonction doit retourner.

Prenons cette requête comme exemple :

SELECT DATENAME(ww,'2022-03-30 12:15:32.1234567 +05:10');
select-datename()

Fonctions permettant de donner en retour des valeurs de date et d’heure selon des critères spécifiques

DATEFROMPARTS()

Sa syntaxe est la suivante :

DATEFROMPARTS ( year, month, day )

Cette fonction donne en retour la valeur d’une date pour l’année, le mois et le jour spécifié.

select-datefromparts()

DATETIME2FROMPARTS()

Voici sa syntaxe :

DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds )

Cette fonction retourne la valeur datetime pour la date et l’heure indiquée.

DATETIMEOFFSETFROMPARTS()

Voici sa syntaxe :

DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision )

Cette fonction retourne la valeur datetimeoffset pour la date et l’heure indiquée avec une précision ainsi que les décalages indiqués.

SMALLDATETIMEFROMPARTS()

La syntaxe est la suivante :

SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )

Cette fonction retourne la valeur smalldate pour la date et l’heure indiquée.

Fonctions permettant de définir ou de retourner des fonctions de format de session

SET DATEFIRST

Voici la syntaxe pour cette fonction :Voici la syntaxe pour cette fonction :

SET DATEFIRST { number | @number_var }  

Cette fonction ajoute au premier un entier compris entre 1 à 7 au premier jour de la semaine.

SET DATEFORMAT

La syntaxe est la suivante :

SET DATEFORMAT { format | @format_var }

Cette fonction va donner l’ordre des composants de la date comme suit :

jour/mois/année

SQL DATE_FORMAT

La fonction DATE_FORMAT permet de formater les dates au format de votre choix.

La syntaxe est la suivante : 

SELECT DATE_FORMAT(date,format)

Les paramètres date et format correspondent respectivement à une donnée de type Date ou DateTime et au format que prendra la date. Le format est une chaîne de caractères qui commence toujours par “%”.

Voici quelques formats récurrents :

  • %b : donne l’abréviation du mois sous la forme suivante :  Jan, Fev, …, Dec ;
date_format_b
  • %a : donne l’abréviation du jour sous forme de : Sun, Mon, … Sat ;
  • %e : retourne le numéro du jour du mois ;
date_format_e
  • %f : retourne les microsecondes (000000…999999) ;
  • %D : retourne le numéro du jour sous la forme anglaise comme ceci : 0th, 1st, 2nd, 3rd, etc. ;
  • %d : retourne le numéro du jour du mois, mais sous 2 décimales. Par exemple, si c’est 4, il retournera 04 ;
  • %H : retourne l’heure sous le format 00…23 ;
  • %h : retourne l’heure sous le format 01…12 ;
  • %I : retourne l’heure sous le format 01…12%i : minutes (00…59) (numérique) ;
  • %j : retourne le jour de l’année sous le format 001…366 ;
  • %k : retourne l’heure sous le format 0…23 ;
  • %l : retourne l’heure sous le format 1…12) ;
  • %M : retourne le nom complet du mois (January…December) ;
  • %m : retourne le numéro du mois (00…12) (numérique) ;
  • %T : retourne l’heure au format 24 heures (hh:mm:ss) ;
  • %U : retourne le numéro de la semaine qui a dimanche comme le premier jour de la semaine ;
  • %u : retourne le numéro de la semaine qui a lundi comme le premier jour de la semaine ;
  • %W : retourne le nom du jour de la semaine ;
  • %w : retourne le numéro du jour de la semaine. 0 correspond à dimanche, 1 correspond à lundi, … 6 correspond à samedi ;
  • %X : numéro de la semaine de l’année, pour lequel le dimanche est le premier jour de la semaine, numérique, 4 digits ; utilisé avec %V ;
  • %X : retourne le numéro de la semaine de l’année dont le dimanche est le premier jour de la semaine ;
  • %x : retourne le numéro de la semaine de l’année dont le lundi est le premier jour de la semaine ;
  • %Y : retourne l’année, en 4 bytes, c’est-à-dire sous format YYYY (2018) ;
  • %y : retourne l’année, en 2 bytes, c’est-à-dire sous format YY (18) ;

Il faut savoir que vous pouvez combiner plusieurs formatages présents sur la liste ci-dessus pour obtenir le format de date que vous souhaitez.

SELECT DATE_FORMAT("2018-09-24 22:21:20", "%W %M %e %Y");
date_format

Pour résumer, en gestion de base de données la date est cruciale, car les données entrées dans une base de données sont à des heures et dates précises. Donc, il est nécessaire de connaître les fonctions qui peuvent vous aider à manipuler les dates dans une base de données.

Voilà, nous terminons ce mini tutoriel ici. Maintenant, vous connaissez toutes les fonctions nécessaires à la manipulation des dates. Vous pouvez donc traiter cette partie des bases de données sans aucun souci. Vous souhaitez apprendre d’autres langages ou technologies sur la programmation informatique, nous vous invitons à parcourir notre blog. Nous vous proposons également de télécharger ce tutoriel gratuit sur la programmation Scala pour la Data.

>