PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So extrahieren Sie die Wochennummer aus einem Datum in PostgreSQL

Problem:

Sie möchten die Wochennummer eines Datums- oder Zeitstempelwerts in einer PostgreSQL-Datenbank abrufen.

Beispiel:

Unsere Datenbank hat eine Tabelle namens children mit Daten in den Spalten id , first_name , last_name und birth_date .

id Vorname Nachname Geburtsdatum
1 Angela Michelin 01.01.2018
2 Martin Jackson 2002-07-26
3 Justin Clark 2010-12-26
4 Frank Barker 2008-06-08

Lassen Sie uns für jedes Kind seinen Vornamen, seinen Nachnamen und die Wochennummer seines Geburtsdatums abrufen.

Lösung 1:

Wir verwenden den DATE_PART() Funktion. Hier ist die Abfrage, die Sie schreiben würden:

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

Hier ist das Ergebnis der Abfrage:

Vorname Nachname Geburtswochennummer
Angela Michelin 1
Martin Jackson 30
Justin Clark 51
Frank Barker 23

Diskussion:

Verwenden Sie den DATE_PART() Funktion zum Abrufen der Wochennummer aus einem Datum in einer PostgreSQL-Datenbank. Diese Funktion benötigt zwei Argumente. Das erste Argument ist der abzurufende Datumsteil; Wir verwenden „Woche“, die die Wochennummer zurückgibt (z. B. „1“ für die erste Woche im Januar, die erste Woche des Jahres). Sie können einen anderen Datumsteil verwenden, wie Tag, Jahr, Monat, Stunde, Minute, Doy (die Zahl des Tages im Jahr) usw. Sie können mehr über Datumsteile in der PostgreSQL-Dokumentation erfahren.

Das zweite Argument ist ein Spaltenname des Datentyps date/timestamp/timestamptz oder ein Ausdruck, der einen dieser Typen zurückgibt. (In unserem Beispiel ist es eine Spalte des Datums Datentyp.)

Bei Verwendung mit dem Datumsteil „Woche“ die Funktion DATE_PART() gibt die Wochennummer als ganze Zahl zurück. In unserem Beispiel wird die Wochennummer für das Geburtsdatum des angegebenen Kindes angezeigt; wir haben diese Spalte birth_week_number genannt . Martin Jackson wurde am 2002-07-26 geboren , also gibt die Funktion „30“ als Wochennummer seines Geburtsdatums zurück.

DATE_PART() ist nicht nur eine Möglichkeit, die Wochennummer zu erhalten. Eine andere Möglichkeit ist die Verwendung von EXTRACT() Funktion.

Lösung 2:

Wir verwenden EXTRACT() Funktion. Hier ist die Abfrage, die Sie schreiben würden:

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

Diese Funktion ähnelt DATE_PART() . Der Unterschied liegt in der Syntax:Statt eines Kommas zwischen Datumsteilname und Spalte/Ausdruck steht das Schlüsselwort FROM. Auch das EXTRACT() Funktion ist SQL-Standard. Das Ergebnis ist für beide Funktionen gleich.