Zum Inhalt springen

Datumsfunktionen

Dieser Abschnitt beschreibt Funktionen und Operatoren zum Untersuchen und Manipulieren von DATE-Werten.

Datumsoperatoren

Die folgende Tabelle zeigt die verfügbaren mathematischen Operatoren für DATE-Typen.

Operator Beschreibung Beispiel Ergebnis
+ Addition von Tagen (Ganzzahlen) DATE '1992-03-22' + 5{:.language-sql .highlight} 1992-03-27
+ Addition eines INTERVAL DATE '1992-03-22' + INTERVAL 5 DAY{:.language-sql .highlight} 1992-03-27 00:00:00
+ Addition eines variablen INTERVAL SELECT DATE '1992-03-22' + INTERVAL (d.days) DAY FROM (VALUES (5), (11)) d(days){:.language-sql .highlight} 1992-03-27 00:00:00 und 1992-04-02 00:00:00
- Subtraktion von DATEs DATE '1992-03-27' - DATE '1992-03-22'{:.language-sql .highlight} 5
- Subtraktion eines INTERVAL DATE '1992-03-27' - INTERVAL 5 DAY{:.language-sql .highlight} 1992-03-22 00:00:00
- Subtraktion eines variablen INTERVAL SELECT DATE '1992-03-27' - INTERVAL (d.days) DAY FROM (VALUES (5), (11)) d(days){:.language-sql .highlight} 1992-03-22 00:00:00 und 1992-03-16 00:00:00

Das Addieren zu oder Subtrahieren von unendlichen Werten liefert denselben unendlichen Wert.

Datumsfunktionen

Die folgende Tabelle zeigt die verfügbaren Funktionen für DATE-Typen. Daten können durch Typpromotion auch mit den Zeitstempelfunktionen manipuliert werden.

Name Beschreibung
date_add(date, interval) Addiert das Intervall zum Datum und liefert einen DATETIME-Wert.
date_diff(part, startdate, enddate) Die Anzahl der part-Grenzen zwischen startdate und enddate, einschließlich des größeren und ausschließlich des kleineren Datums.
date_part(part, date) Holt ein Teilfeld (gleichwertig mit extract).
date_sub(part, startdate, enddate) Die vorzeichenbehaftete Länge des Intervalls zwischen startdate und enddate, auf ganze Vielfache von part abgeschnitten.
date_trunc(part, date) Schneidet auf die angegebene Genauigkeit zu.
dayname(date) Der (englische) Name des Wochentags.
days_in_month(date) Die Anzahl der Tage im Monat des angegebenen Datums.
extract(part from date) Holt ein Teilfeld aus einem Datum.
greatest(date, date) Das spätere von zwei Daten.
isfinite(date) Liefert wahr, wenn das Datum endlich ist, sonst falsch.
isinf(date) Liefert wahr, wenn das Datum unendlich ist, sonst falsch.
julian(date) Extrahiert die Julianische Tageszahl aus einem Datum.
last_day(date) Der letzte Tag des entsprechenden Monats im Datum.
least(date, date) Das frühere von zwei Daten.
make_date(year, month, day) Das Datum für die angegebenen Bestandteile.
monthname(date) Der (englische) Name des Monats.
strftime(date, format) Wandelt ein Datum gemäß der Formatzeichenkette in eine Zeichenkette um.
time_bucket(bucket_width, date[, offset]) Schneidet date auf ein Raster der Breite bucket_width zu. Das Raster ist bei 2000-01-01[ + offset] verankert, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst bei 2000-01-03[ + offset]. Beachten Sie, dass 2000-01-03 ein Montag ist.
time_bucket(bucket_width, date[, origin]) Schneidet timestamptz auf ein Raster der Breite bucket_width zu. Das Raster ist am Zeitstempel origin verankert, der standardmäßig 2000-01-01 ist, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst 2000-01-03. Beachten Sie, dass 2000-01-03 ein Montag ist.
today() Aktuelles Datum (Beginn der aktuellen Transaktion) in der lokalen Zeitzone.

date_add(date, interval)

| Beschreibung | Addiert das Intervall zum Datum und liefert einen DATETIME-Wert. | | Beispiel | date_add(DATE '1992-09-15', INTERVAL 2 MONTH) | | Ergebnis | 1992-11-15 00:00:00 |

date_diff(part, startdate, enddate)

| Beschreibung | Die Anzahl der part-Grenzen zwischen startdate und enddate, einschließlich des größeren und ausschließlich des kleineren Datums. | | Beispiel | date_diff('month', DATE '1992-09-15', DATE '1992-11-14') | | Ergebnis | 2 | | Alias | datediff |

date_part(part, date)

| Beschreibung | Holt das Teilfeld (gleichwertig mit extract). | | Beispiel | date_part('year', DATE '1992-09-20') | | Ergebnis | 1992 | | Alias | datepart |

date_sub(part, startdate, enddate)

| Beschreibung | Die vorzeichenbehaftete Länge des Intervalls zwischen startdate und enddate, auf ganze Vielfache von part abgeschnitten. | | Beispiel | date_sub('month', DATE '1992-09-15', DATE '1992-11-14') | | Ergebnis | 1 | | Alias | datesub |

date_trunc(part, date)

| Beschreibung | Schneidet auf die angegebene Genauigkeit zu. Liefert immer ein TIMESTAMP, auch wenn die Eingabe ein DATE ist. | | Beispiel | date_trunc('month', DATE '1992-03-07') | | Ergebnis | 1992-03-01 00:00:00 | | Alias | datetrunc |

dayname(date)

| Beschreibung | Der (englische) Name des Wochentags. | | Beispiel | dayname(DATE '1992-09-20') | | Ergebnis | Sunday |

days_in_month(date)

| Beschreibung | Die Anzahl der Tage im Monat des angegebenen Datums. | | Beispiel | days_in_month(DATE '1992-02-15') | | Ergebnis | 29 |

extract(part from date)

| Beschreibung | Holt ein Teilfeld aus einem Datum. | | Beispiel | extract('year' FROM DATE '1992-09-20') | | Ergebnis | 1992 |

greatest(date, date)

| Beschreibung | Das spätere von zwei Daten. | | Beispiel | greatest(DATE '1992-09-20', DATE '1992-03-07') | | Ergebnis | 1992-09-20 |

isfinite(date)

| Beschreibung | Liefert true, wenn das Datum endlich ist, sonst falsch. | | Beispiel | isfinite(DATE '1992-03-07') | | Ergebnis | true |

isinf(date)

| Beschreibung | Liefert true, wenn das Datum unendlich ist, sonst falsch. | | Beispiel | isinf(DATE '-infinity') | | Ergebnis | true |

julian(date)

| Beschreibung | Extrahiert die Julianische Tageszahl aus einem Datum. | | Beispiel | julian(DATE '1992-09-20') | | Ergebnis | 2448886.0 |

last_day(date)

| Beschreibung | Der letzte Tag des entsprechenden Monats im Datum. | | Beispiel | last_day(DATE '1992-09-20') | | Ergebnis | 1992-09-30 |

least(date, date)

| Beschreibung | Das frühere von zwei Daten. | | Beispiel | least(DATE '1992-09-20', DATE '1992-03-07') | | Ergebnis | 1992-03-07 |

make_date(year, month, day)

| Beschreibung | Das Datum für die angegebenen Bestandteile. | | Beispiel | make_date(1992, 9, 20) | | Ergebnis | 1992-09-20 |

monthname(date)

| Beschreibung | Der (englische) Name des Monats. | | Beispiel | monthname(DATE '1992-09-20') | | Ergebnis | September |

strftime(date, format)

| Beschreibung | Wandelt ein Datum gemäß der Formatzeichenkette in eine Zeichenkette um. | | Beispiel | strftime(DATE '1992-01-01', '%a, %-d %B %Y') | | Ergebnis | Wed, 1 January 1992 |

time_bucket(bucket_width, date[, offset])

| Beschreibung | Schneidet date auf ein Raster der Breite bucket_width zu. Das Raster ist bei 2000-01-01[ + offset] verankert, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst bei 2000-01-03[ + offset]. Beachten Sie, dass 2000-01-03 ein Montag ist. | | Beispiel | time_bucket(INTERVAL '2 months', DATE '1992-04-20', INTERVAL '1 month') | | Ergebnis | 1992-04-01 |

time_bucket(bucket_width, date[, origin])

| Beschreibung | Schneidet timestamptz auf ein Raster der Breite bucket_width zu. Das Raster ist am Zeitstempel origin verankert, der standardmäßig 2000-01-01 ist, wenn bucket_width eine Anzahl von Monaten oder gröberen Einheiten ist, sonst 2000-01-03. Beachten Sie, dass 2000-01-03 ein Montag ist. | | Beispiel | time_bucket(INTERVAL '2 weeks', DATE '1992-04-20', DATE '1992-04-01') | | Ergebnis | 1992-04-15 |

today()

| Beschreibung | Aktuelles Datum (Beginn der aktuellen Transaktion) in der lokalen Zeitzone. | | Beispiel | today() | | Ergebnis | 2022-10-08 | | Alias | current_date (keine Klammern erforderlich) |

Funktionen zur Extraktion von Datumsbestandteilen

Es gibt auch eigene Extraktionsfunktionen, um die Teilfelder zu holen. Einige Beispiele sind das Extrahieren des Tages aus einem Datum oder des Wochentags aus einem Datum.

Auf unendliche Daten angewendete Funktionen liefern entweder dieselben unendlichen Daten (z. B. greatest) oder NULL (z. B. date_part), je nachdem, was „sinnvoll“ ist. Im Allgemeinen ist das Ergebnis NULL, wenn die Funktion die Bestandteile des unendlichen Datums untersuchen muss.