PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment extraire le numéro de semaine d'une date dans PostgreSQL

Problème :

Vous souhaitez obtenir le numéro de semaine d'une valeur de date ou d'horodatage dans une base de données PostgreSQL.

Exemple :

Notre base de données a une table nommée children avec des données dans les colonnes id , first_name , last_name , et birth_date .

identifiant prénom nom_de_famille date_naissance
1 Angèle Michelin 2018-01-01
2 Martin Jackson 2002-07-26
3 Justin Clark 2010-12-26
4 Franck Aboyeur 2008-06-08

Pour chaque enfant, obtenons son prénom, son nom et le numéro de semaine de sa date de naissance.

Solution 1 :

Nous utiliserons le DATE_PART() une fonction. Voici la requête que vous écririez :

SELECT first_name,
	 last_name,
       DATE_PART('week',birth_date) 
         AS  birth_week_number
FROM children;

Voici le résultat de la requête :

prénom nom_de_famille birth_week_number
Angèle Michelin 1
Martin Jackson 30
Justin Clark 51
Franck Aboyeur 23

Discussion :

Utilisez le DATE_PART() fonction pour récupérer le numéro de semaine à partir d'une date dans une base de données PostgreSQL. Cette fonction prend deux arguments. Le premier argument est la partie date à récupérer; nous utilisons 'semaine', qui renvoie le numéro de la semaine (par exemple "1" pour la première semaine de janvier, la première semaine de l'année). Vous pouvez utiliser une autre partie de date, comme jour, année, mois, heure, minute, doy (le numéro du jour dans l'année), etc. Vous pouvez en savoir plus sur les parties de date dans la documentation de PostgreSQL.

Le deuxième argument est un nom de colonne du type de données date/timestamp/timestamptz ou une expression renvoyant l'un de ces types. (Dans notre exemple, il s'agit d'une colonne de la date type de données.)

Lorsqu'elle est utilisée avec la partie de date "semaine", la fonction DATE_PART() renvoie le numéro de la semaine sous la forme d'un entier. Dans notre exemple, le numéro de semaine pour la date de naissance de l'enfant donné est affiché ; nous avons nommé cette colonne birth_week_number . Martin Jackson est né le 2002-07-26 , la fonction renvoie donc "30" comme numéro de semaine de sa date de naissance.

DATE_PART() n'est pas seulement une façon d'obtenir le numéro de semaine. Une autre option consiste à utiliser le EXTRACT() fonction.

Solution 2 :

Nous utiliserons le EXTRACT() une fonction. Voici la requête que vous écririez :

SELECT first_name,
	 last_name,
       EXTRACT('week' FROM birth_date) 
         AS  birth_week_number
FROM children;

Cette fonction est similaire à DATE_PART() . La différence réside dans la syntaxe :au lieu d'une virgule entre le nom de la partie date et la colonne/expression, il y a le mot-clé FROM. Aussi, le EXTRACT() la fonction est la norme SQL. Le résultat est le même pour les deux fonctions.