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

Sådan fungerer Extract() i PostgreSQL

I PostgreSQL er extract() funktionen henter underfelter såsom år, måned, time eller minut, en del af en dato/tidsværdi.

Det svarer til date_part() funktion, dog med en lidt anden syntaks.

Syntaks

Syntaksen ser sådan ud:

EXTRACT(field FROM source)

Hvor:

  • field is er en identifikator eller streng, der vælger, hvilket felt der skal udtrækkes fra kildeværdien.
  • source er et tidsstempel eller et interval .

Eksempel – Tidsstempel

Her er et grundlæggende eksempel til at demonstrere, hvordan man henter et felt fra et tidsstempel værdi.

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

Resultat:

10

Dette eksempel henter timefeltet fra et tidsstempel værdi.

Som nævnt kan det første argument være en identifikator eller streng. Dette er en af ​​forskellene mellem extract() og date_part() . Når du bruger date_part() , skal du angive en streng for dette argument.

Her er det samme eksempel igen, undtagen som en streng.

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

Resultat:

10

Her er et eksempel med samme tidsstempel, men denne gang henter jeg år-feltet.

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

Resultat:

2022

Eksempel – Interval

I dette eksempel henter jeg en datodel fra et interval værdi.

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

Resultat:

7

I det næste eksempel returnerer funktionen korrekt antallet af timer, selvom jeg kun angiver antallet af minutter.

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

Resultat:

2

Regn dog ikke med denne teknik. Du vil måske opdage, at du ikke altid får det resultat, du forventer.

For eksempel:

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

Resultat:

1

Og en anden:

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

Resultat:

0

Feltnavne

Det første argument kan være et af følgende:

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

Disse er de samme som de gyldige værdier for date_part() funktion.


  1. Indsæt CreatedBy og CreatedOn i eventuelle manglende datatabeller i SQL

  2. Forberedelse af en MySQL- eller MariaDB-server til produktion - Anden del

  3. Introduktion til PL/SQL VARRAY'er i Oracle-databasen

  4. Hvordan synkroniseres Mysql DB igen, hvis Master og slave har forskellige databaser i tilfælde af Mysql-replikering?