La plupart des principaux SGBDR ont des fonctions qui nous permettent d'extraire le jour, le mois et l'année des valeurs datetime.
Certains RDBMS offrent plusieurs façons de le faire, et d'autres sont plus limités. Vous trouverez ci-dessous des exemples d'extraction du jour, du mois et de l'année à partir des valeurs de date dans certains des SGBDR les plus populaires.
MySQL
MySQL a plusieurs fonctions qui peuvent être utilisées pour extraire le jour, le mois et l'année d'une date. L'un d'eux est le EXTRACT()
fonction :
SELECT
EXTRACT(DAY FROM '2035-12-19') AS Day,
EXTRACT(MONTH FROM '2035-12-19') AS Month,
EXTRACT(YEAR FROM '2035-12-19') AS Year;
Résultat :
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 19 | 12 | 2035 | +------+-------+------+
Dans ce cas, j'ai extrait chaque partie de date dans son propre champ.
Si vous souhaitez que toutes les parties de date soient renvoyées dans le même champ, le DATE_FORMAT()
la fonction peut le faire pour vous.
MySQL a également un tas de fonctions qui renvoient des parties de date spécifiques à partir d'une date, telles que DAY()
, MONTH()
, YEAR()
, etc.
Voir Renvoyer le jour, le mois et l'année dans MySQL pour plus d'exemples.
Oracle
Oracle a un TO_CHAR()
fonction qui peut être utilisée pour extraire des parties de date dans leurs propres champs, ou toutes dans un seul champ. Voici un exemple de retour dans des champs individuels :
SELECT
TO_CHAR(DATE '2035-09-26', 'Day') AS Day,
TO_CHAR(DATE '2035-09-26', 'DD') AS DD,
TO_CHAR(DATE '2035-09-26', 'Month') AS Month,
TO_CHAR(DATE '2035-09-26', 'YYYY') AS Year
FROM DUAL;
Résultat :
DAY DD MONTH YEAR ____________ _____ ____________ _______ Wednesday 26 September 2035
Voir cette liste complète des éléments de format Datetime dans Oracle pour une liste des éléments de format qui peuvent être utilisés pour formater les valeurs datetime avec cette fonction.
Oracle a également un EXTRACT()
fonction qui fonctionne comme la fonction MySQL du même nom.
SQL Server
SQL Server propose une gamme assez large de fonctions pouvant renvoyer des parties de date telles que le jour, le mois et l'année.
Le DATEPART()
est conçue spécifiquement pour renvoyer des parties spécifiées d'une date :
DECLARE @date date = '2045-07-03';
SELECT
DATEPART(day, @date) AS DAY,
DATEPART(weekday, @date) AS WEEKDAY,
DATEPART(month, @date) AS MONTH,
DATEPART(year, @date) AS YEAR;
Résultat :
+-------+-----------+---------+--------+ | DAY | WEEKDAY | MONTH | YEAR | |-------+-----------+---------+--------| | 3 | 2 | 7 | 2045 | +-------+-----------+---------+--------+
Une fonction similaire est DATENAME()
, qui peut renvoyer les noms de jour et de mois sous forme de chaîne.
SQL Server a également des fonctions telles que DAY()
, MONTH()
, YEAR()
, etc. qui renvoient une partie de date spécifique.
Et n'oublions pas le FORMAT()
fonction, ce qui est parfait si vous souhaitez renvoyer toutes les parties de date dans le même champ.
Voir 6 fonctions pour obtenir le jour, le mois et l'année à partir d'une date dans SQL Server pour plus d'exemples.
PostgreSQL
PostgreSQL a quelques fonctions qui peuvent renvoyer des parties de date à partir de dates.
Voici un exemple de DATE_PART()
fonction :
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year";
Résultat :
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL a également un EXTRACT()
fonction qui fait fondamentalement la même chose, sauf avec une syntaxe légèrement différente.
Et le TO_CHAR()
La fonction peut être utilisée si vous souhaitez renvoyer plusieurs parties de date dans le même champ.
SQLite
SQLite est plus limité en ce qui concerne les fonctions de date et d'heure. Cependant, vous pouvez toujours utiliser le STRFTIME()
fonction pour extraire le jour, le mois et l'année d'une date :
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Résultat :
01 12 2035
Dans cet exemple, j'ai renvoyé toutes les parties de date dans le même champ. Mais ce n'est pas forcément obligatoire. Si vous voulez qu'ils soient renvoyés dans différents champs, vous pouvez appeler STRFTIME()
plusieurs fois, chacune avec un élément de format différent :
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Résultat :
Day Month Year --- ----- ---- 01 12 2035
MariaDB
MariaDB fournit une grande sélection de fonctions qui peuvent renvoyer le jour, le mois et l'année à partir d'une valeur datetime.
Voici un exemple de DATE_FORMAT()
fonction :
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Résultat :
+-------------------------------------------+ | DATE_FORMAT('2023-07-25', '%W, %D %M %Y') | +-------------------------------------------+ | Tuesday, 25th July 2023 | +-------------------------------------------+
Cette fonction nous permet de renvoyer toutes les parties de date dans un seul champ (bien que cela ne soit pas obligatoire - vous pouvez tout aussi facilement renvoyer chaque partie de date dans un champ différent en appelant DATE_FORMAT()
plusieurs fois, chaque fois avec une chaîne de format différente).
Et comme certains autres, MariaDB a aussi un EXTRACT()
fonction qui extrait une partie de date donnée.
Et il existe également une large gamme de fonctions spécifiques pour chaque partie de date, telles que DAY()
, MONTH()
, YEAR()
, etc
Voir 11 fonctions pour obtenir le jour, le mois et l'année à partir d'une date dans MariaDB pour un aperçu complet.