sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur Extract() fungerar i PostgreSQL

I PostgreSQL, extract() funktionen hämtar underfält som år, månad, timme eller minut, en del från ett datum-/tidsvärde.

Det motsvarar date_part() funktion, men med en något annorlunda syntax.

Syntax

Syntaxen ser ut så här:

EXTRACT(field FROM source)

Var:

  • field is är en identifierare eller sträng som väljer vilket fält som ska extraheras från källvärdet.
  • source är en tidsstämpel eller ett intervall .

Exempel – Tidsstämpel

Här är ett grundläggande exempel för att visa hur man hämtar ett fält från en tidsstämpel värde.

SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');

Resultat:

10

Det här exemplet hämtar timfältet från en tidsstämpel värde.

Som nämnts kan det första argumentet vara en identifierare eller sträng. Detta är en av skillnaderna mellan extract() och date_part() . När du använder date_part() , måste du ange en sträng för detta argument.

Här är samma exempel igen, förutom som en sträng.

SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');

Resultat:

10

Här är ett exempel med samma tidsstämpel, men den här gången hämtar jag fältet år.

SELECT extract(year FROM timestamp '2022-10-30 10:11:35');

Resultat:

2022

Exempel – Intervall

I det här exemplet hämtar jag en datumdel från ett intervall värde.

SELECT extract(hour FROM interval '7 hours 45 minutes');

Resultat:

7

I nästa exempel returnerar funktionen korrekt antalet timmar, även om jag bara anger antalet minuter.

SELECT extract(hour FROM interval '120 minutes');

Resultat:

2

Räkna dock inte med denna teknik. Du kanske upptäcker att du inte alltid får det resultat du förväntar dig.

Till exempel:

SELECT extract(hour FROM interval '100 minutes');

Resultat:

1

Och en annan:

SELECT extract(minute FROM interval '2 hours');

Resultat:

0

Fältnamn

Det första argumentet kan vara något av följande:

  • century
  • day
  • decade
  • dow
  • doy
  • epoch
  • hour
  • isodow
  • isoyear
  • microseconds
  • millennium
  • milliseconds
  • minute
  • month
  • quarter
  • second
  • timezone
  • timezone_hour
  • timezone_minute
  • week
  • year

Dessa är desamma som de giltiga värdena för date_part() funktion.


  1. Hur man begränsar resultat i Oracle

  2. Förstå Java Support for Persistence med JPA

  3. Hur man tar bort en rad i SQL

  4. Maximal storlek för en varchar(max)-variabel