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

Funktionsweise von Extract() in PostgreSQL

In PostgreSQL der extract() Die Funktion ruft Unterfelder wie Jahr, Monat, Stunde oder Minute ab, die Teil eines Datums-/Uhrzeitwerts sind.

Es entspricht dem date_part() Funktion, allerdings mit etwas anderer Syntax.

Syntax

Die Syntax lautet wie folgt:

EXTRACT(field FROM source)

Wo:

  • field Dies ist eine Kennung oder Zeichenfolge, die auswählt, welches Feld aus dem Quellwert extrahiert werden soll.
  • source ist ein Zeitstempel oder ein Intervall .

Beispiel – Zeitstempel

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie ein Feld aus einem Zeitstempel abgerufen wird Wert.

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

Ergebnis:

10

Dieses Beispiel ruft das Stundenfeld aus einem Zeitstempel ab Wert.

Wie bereits erwähnt, kann das erste Argument ein Bezeichner oder eine Zeichenfolge sein. Dies ist einer der Unterschiede zwischen extract() und date_part() . Bei Verwendung von date_part() , müssen Sie für dieses Argument eine Zeichenfolge angeben.

Hier ist noch einmal das gleiche Beispiel, außer als String.

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

Ergebnis:

10

Hier ist ein Beispiel mit demselben Zeitstempel, aber dieses Mal rufe ich das Jahresfeld ab.

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

Ergebnis:

2022

Beispiel – Intervall

In diesem Beispiel rufe ich einen Datumsteil aus einem Intervall ab Wert.

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

Ergebnis:

7

Im nächsten Beispiel gibt die Funktion die Anzahl der Stunden korrekt zurück, obwohl ich nur die Anzahl der Minuten angebe.

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

Ergebnis:

2

Verlassen Sie sich jedoch nicht auf diese Technik. Sie werden möglicherweise feststellen, dass Sie nicht immer das erwartete Ergebnis erhalten.

Zum Beispiel:

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

Ergebnis:

1

Und noch eins:

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

Ergebnis:

0

Feldnamen

Das erste Argument kann eines der folgenden sein:

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

Dies sind dieselben wie die gültigen Werte für date_part() Funktion.