sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan udtrækkes ugenummeret fra en dato i PostgreSQL

Problem:

Du ønsker at få ugenummeret på en dato eller tidsstempelværdi i en PostgreSQL-database.

Eksempel:

Vores database har en tabel med navnet children med data i kolonnerne id , first_name , last_name og birth_date .

id fornavn efternavn fødselsdato
1 Angela Michelin 2018-01-01
2 Martin Jackson 2002-07-26
3 Justin Clark 2010-12-26
4 Frank Barker 2008-06-08

Lad os for hvert barn få deres fornavn, efternavn og ugenummeret på deres fødselsdato.

Løsning 1:

Vi bruger DATE_PART() fungere. Her er den forespørgsel, du ville skrive:

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

Her er resultatet af forespørgslen:

fornavn efternavn fødselsugenummer
Angela Michelin 1
Martin Jackson 30
Justin Clark 51
Frank Barker 23

Diskussion:

Brug DATE_PART() funktion til at hente ugenummeret fra en dato i en PostgreSQL-database. Denne funktion tager to argumenter. Det første argument er datodelen, der skal hentes; vi bruger 'uge', som returnerer ugenummeret (f.eks. "1" for den første uge i januar, årets første uge). Du kan bruge en anden datodel, såsom dag, år, måned, time, minut, doy (dagens nummer i året) osv. Du kan lære mere om datodele i PostgreSQL-dokumentationen.

Det andet argument er et kolonnenavn af datatypen date/timestamp/timestamptz eller et udtryk, der returnerer en af ​​disse typer. (I vores eksempel er det en kolonne med datoen datatype.)

Når den bruges sammen med "uge"-datodelen, funktionen DATE_PART() returnerer ugenummeret som et heltal. I vores eksempel vises ugenummeret for det givne barns fødselsdato; vi navngav denne kolonne birth_week_number . Martin Jackson blev født 2002-07-26 , så funktionen returnerer '30' som ugenummeret på hans fødselsdato.

DATE_PART() er ikke kun én måde at få ugenummeret på. En anden mulighed er at bruge EXTRACT() funktion.

Løsning 2:

Vi bruger EXTRACT() fungere. Her er den forespørgsel, du ville skrive:

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

Denne funktion ligner DATE_PART() . Forskellen ligger i syntaksen:i stedet for et komma mellem datodelens navn og kolonnen/udtrykket er der nøgleordet FROM. Også EXTRACT() Funktionen er SQL-standard. Resultatet er det samme for begge funktioner.


  1. Guide til designdatabase til quiz i MySQL

  2. Android SQLite jokertegn

  3. Svæv højere i skyen med MariaDB SkySQL

  4. Sådan fungerer APPROX_COUNT_DISTINCT() i SQL Server