Zurück zur Artikelliste Artikel
10 Leseminuten

PostgreSQL Datumsfunktionen

Das Verständnis der Datums- und Zeitfunktionen in Ihrer Datenbank ist für eine effektive Datenanalyse und Berichterstattung unerlässlich. Lesen Sie weiter, um mehr über PostgreSQL-Datumsfunktionen zu erfahren.

Dieser Artikel behandelt einige der nützlichsten PostgreSQL Datums- und Zeitfunktionen und ihre Anwendungen in der Datenanalyse und im Berichtswesen. Die SQL-Datumsfunktionen erleichtern verschiedene Datenanalyseaufgaben, einschließlich der Verkaufsanalyse, der Finanzberichterstattung, der Website-Analyse und mehr.

Dieser Artikel stellt Ihnen die Werkzeuge in Form von PostgreSQL-Datums- und Zeitfunktionen vor, die zur Erfüllung dieser Aufgaben verwendet werden. Wir beginnen mit einem kurzen Überblick über die in PostgreSQL verfügbaren Datums- und Zeitdatentypen, bevor wir zu den Funktionen übergehen.

Schauen Sie sich unser SQL-Kochbuch an, das eine Vielzahl von SQL-Rezepten für PostgreSQL und andere Dialekte enthält. Sie sind eine wertvolle Ressource, die Sie als Lesezeichen speichern sollten, um beim Schreiben Ihrer Abfragen schnell nachschlagen zu können. Mehr über das Konzept eines SQL-Kochbuchs erfahren Sie hier.

Datum- und Zeit-Datentypen in PostgreSQL

In PostgreSQL gibt es verschiedene Datentypen, um Datums- und Zeitwerte zu speichern. Nachfolgend finden Sie eine Übersicht über die am häufigsten verwendeten Typen:

Data TypeUsageFormatExample
DATEIt stores date values that include a year (YYYY), month (MM), and day (DD).YYYY-MM-DD2024-06-01
TIMEIt stores time values that include an hour (HH), minute (MM), and second (SS).HH:MM:SS12:30:15
TIMESTAMPIt stores date and time values.YYYY-MM-DD HH:MM:SS2024-07-30 12:30:15
INTERVALIt stores an interval between two date/time values or an interval that can be added to or subtracted from a date/time value.INTERVAL 'x YEAR x MONTH x DAY x HOUR x MINUTE x SECOND'INTERVAL '2 YEARS 1 MONTH 3 DAYS 4 HOURS 1 MINUTE'

Für Datenanalysen, die unterschiedliche Zeitzonen berücksichtigen müssen, bietet PostgreSQL Datentypen wie TIME WITH TIME ZONE (speichert Zeitwerte mit Zeitzoneninformationen) und TIMESTAMP WITH TIME ZONE (speichert Datums- und Zeitwerte mit Zeitzoneninformationen).

Lesen Sie unseren Artikel Ein Überblick über die PostgreSQL-Datentypen, um mehr über die in PostgreSQL verfügbaren Datentypen zu erfahren. Und wenn Sie mehr üben möchten, schauen Sie sich diese 19 Übungen in PostgreSQL mit detaillierten Lösungen an.

Wir werden alle oben genannten Datentypen verwenden, während wir die Datums- und Zeitfunktionen von PostgreSQL untersuchen. Fangen wir an!

Ein Überblick über die Datums- und Zeitfunktionen in PostgreSQL

Alle Datums- und Zeitfunktionen in PostgreSQL können in die folgenden Kategorien eingeteilt werden:

  • Vergleich von Datums- und Zeitwerten
  • Abrufen aktueller Datums- und Zeitwerte
  • Arithmetische Operationen mit Datums- und Zeitwerten durchführen
  • Manipulation von Datums- und Zeitwerten
  • Formatierung von Datums- und Zeitwerten

In den folgenden Abschnitten sind alle relevanten Funktionen mit Beispielen aufgeführt.

Dies ist die sales Tabelle, die wir für unsere Beispiele verwenden werden:

sale_idsale_datesale_timesale_timestampshop_nameproduct_nameamount_sold
12024-06-0108:00:002024-06-01 08:00:00GreenGrocerApples100
22024-06-0110:30:002024-06-01 10:30:00GreenGrocerBananas150
32024-06-0111:45:002024-06-01 11:45:00GreenGrocerOranges200
42024-06-0109:15:002024-06-01 09:15:00SuperMartCharger6
52024-06-0113:20:002024-06-01 13:20:00SuperMartHeadphones9
62024-06-0114:45:002024-06-01 14:45:00SuperMartLaptop11
72024-06-0110:00:002024-06-01 10:00:00MegaMallKeyboard5
82024-06-0111:30:002024-06-01 11:30:00MegaMallMouse8
92024-06-0112:45:002024-06-01 12:45:00MegaMallMonitor10
102024-06-0113:30:002024-06-01 13:30:00MegaMallPrinter6

Vergleich von Datums- und Zeitwerten

Um Datums- und Zeitwerte in PostgreSQL zu vergleichen, verwenden wir Standardvergleichsoperatoren. Zu diesen Operatoren gehören =, !=, <>, >, >=, <, <=, BETWEEN, und NOT BETWEEN.

Im Folgenden finden Sie Beispiele für die Verwendung der einzelnen Vergleichsoperatoren.

Gleichheitsoperator (=)

Frage: Wie viele Verkäufe gab es am 1. Juni 2024?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_date = '2024-06-01';
count
10

Nicht-Gleichheitsoperator (!= oder <>)

Frage: Wie viele Verkäufe fanden nicht um 10:00:00 Uhr statt?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_time != '10:00:00';
count
9

Operator "Größer als" (>)

Frage: Wie viele Verkäufe fanden nach dem 1. Juni 2024 um 10:00:00 Uhr statt?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp > '2024-06-01 10:00:00';
count
6

Hinweis: Beim Vergleich von Daten in SQL bedeutet der Operator >, dass das Datum X weiter in der Zukunft (später) liegt als das Datum Y, wenn es größer als das Datum Y ist.

Operator "Größer als" oder "Gleich" (>=)

Frage: Wie viele Verkäufe fanden am oder nach 10:00:00 Uhr am 1. Juni 2024 statt?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp >= '2024-06-01 10:00:00';
count
7

Hinweis: Beim Vergleich von Zeitstempeln in SQL bedeutet der Operator >=, dass, wenn der Zeitstempel X größer als oder gleich dem Zeitstempel Y ist, der Zeitstempel X weiter in der Zukunft (später) liegt als der Zeitstempel Y oder diesem entspricht.

Kleiner-als (<) Operator

Frage: Wie viele Verkäufe fanden vor 12:00:00 Uhr am 1. Juni 2024 statt?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp < '2024-06-01 12:00:00';
count
7

Hinweis: Beim Vergleich von Zeitstempeln in SQL bedeutet der Operator <, dass, wenn Zeitstempel X kleiner als Zeitstempel Y ist, X zeitlich vor Y liegt.

Kleiner-als-gleich (<=) Operator

Frage: Wie viele Verkäufe fanden am oder vor dem 1. Juni 2024 um 12:00:00 Uhr statt?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp <= '2024-06-01 12:00:00';
count
7

Hinweis: Beim Vergleich von Datums- oder Zeitangaben in SQL bedeutet der Operator <=, dass, wenn das Datum X kleiner oder gleich dem Datum Y ist, das Datum X zeitlich vor oder gleich dem Datum Y liegt.

BETWEEN-Operator

Frage: Wie viele Verkäufe fanden zwischen 10:00:00 und 14:00:00 Uhr statt?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp BETWEEN '2024-06-01 10:00:00'
AND '2024-06-01 14:00:00';
count
6

NOT BETWEEN-Operator

Frage: Wie viele Verkäufe fanden nicht zwischen 10:00:00 und 14:00:00 Uhr statt?

Antwort:

SELECT COUNT(*) AS count
FROM sales
WHERE sale_timestamp NOT BETWEEN '2024-06-01 10:00:00'
AND '2024-06-01 14:00:00';
count
4

Gut zu wissen: Sie können die Ausgabe nach Datum, Uhrzeit oder Zeitstempel sortieren, indem Sie die entsprechende Spalte in die ORDER BY Klausel aufnehmen.

Schauen Sie sich diese Kochbücher an, um mehr zu erfahren:

Aktuelle Datums- und Zeitwerte abrufen

Bei der Analyse von Daten möchten wir diese oft mit dem aktuellen Zeitstempel vergleichen, wenn die Abfrage ausgeführt wird. In PostgreSQL kann dies mit der Funktion NOW() und den Schlüsselwörtern CURRENT_DATE, CURRENT_TIME und CURRENT_TIMESTAMP erreicht werden.

Wichtig: Die Funktion NOW() ist spezifisch für PostgreSQL, während die Funktionen CURRENT_* in Standard-SQL zur Verfügung gestellt werden und für die Verwendung über die Funktion NOW() empfohlen werden.

JETZT()

Verwenden Sie diese Funktion, um das aktuelle Datum und die aktuelle Uhrzeit zusammen mit der Zeitzone auszuwählen.

SELECT NOW();
now
2024-06-09 17:00:55.732 +0200

AKTUELLES_DATUM

Verwenden Sie dieses Schlüsselwort, um das aktuelle Datum auszuwählen.

SELECT CURRENT_DATE;
current_date
2024-06-09

AKTUELLE_ZEIT

Verwenden Sie dieses Schlüsselwort, um die aktuelle Zeit zusammen mit der Zeitzone (aber ohne das Datum) auszuwählen.

SELECT CURRENT_TIME;
current_time
17:03:50 +0200

CURRENT_TIMESTAMP

Verwenden Sie diese Funktion, um das aktuelle Datum und die aktuelle Uhrzeit zusammen mit der Zeitzone auszuwählen.

SELECT CURRENT_TIMESTAMP;
current_timestamp
2024-06-09 17:05:45.854 +0200

Schauen Sie sich diese Kochbücher an, um mehr zu erfahren:

Arithmetische Operationen auf Datums- und Zeitwerten

Arithmetische Operationen auf Datums- und Zeitwerten in PostgreSQL beinhalten die Berechnung der Differenz zwischen zwei Datumswerten und das Addieren oder Subtrahieren von INTERVALs zu oder von Datums-/Zeitwerten.

Folgen Sie den unten stehenden Beispielen, um:

Berechnen Sie die Differenz zwischen zwei Datumswerten mit der Funktion AGE().

SELECT AGE(sale_date, CURRENT_DATE) AS age_difference
FROM sales
WHERE product_name = 'Apples';
age_difference
-8 days

Beachten Sie, dass dies das INTERVALL zwischen zwei Werten zurückgibt.

Berechnen Sie die Differenz zwischen zwei Datumswerten mit dem Minus (-) Operator.

SELECT sale_timestamp - CURRENT_TIMESTAMP AS difference
FROM sales
WHERE product_name = 'Apples';
difference
-8 days -09:56:38.387095

Beachten Sie, dass dies ein Intervall zwischen zwei Werten zurückgibt, wie es die Funktion age() tun würde.

Berechnen Sie die Differenz zwischen zwei Zeitwerten mit dem Minus (-)-Operator.

SELECT sale_time, sale_time - '09:00:00' AS difference
FROM sales
WHERE product_name = 'Apples';
sale_timedifference
08:00:00-01:00:00

INTERVALs addieren.

Verwenden Sie den Plus-Operator (+), um einen INTERVAL zu einem Datums-/Zeitwert hinzuzufügen:

SELECT sale_date + INTERVAL '1 day' AS next_day
FROM sales
WHERE product_name = 'Apples';
next_day
2024-06-02 00:00:00.000

INTERVALs subtrahieren.

Verwenden Sie den Minus-Operator (-), um ein INTERVAL von einem Datums-/Zeitwert zu subtrahieren.

SELECT sale_date - INTERVAL '1 week' AS previous_week
FROM sales
WHERE product_name = 'Apples';
previous_week
2024-05-25 00:00:00.000

In diesen Kochbüchern erfahren Sie mehr:

Manipulation von Datums- und Zeitwerten

PostgreSQL stellt Funktionen zur Verfügung, die es ermöglichen, bestimmte Teile von Datums-/Zeitwerten zu extrahieren, wie z.B. DATE_PART(), DATE_TRUNC() und EXTRACT(). In der Datenanalyse werden diese Funktionen häufig verwendet, um Daten nach Tag, Monat oder Jahr zu gruppieren und so die Erstellung von Berichten mit Statistiken über bestimmte Zeiträume zu ermöglichen.

DATE_PART()

Extrahiert eine bestimmte Komponente (z. B. Jahr, Monat oder Tag) aus einem Datums-/Zeitwert.

SELECT DATE_PART('year', sale_date) AS sale_year
FROM sales
WHERE product_name = 'Apples';
sale_year
2024

EXTRACT()

Extrahiert einen bestimmten Teil (z. B. Jahr, Monat oder Tag) aus einem Datums-/Zeitwert.

SELECT EXTRACT(YEAR FROM sale_date) AS sale_year
FROM sales
WHERE product_name = 'Apples';
sale_year
2024

Die Funktion EXTRACT() kann austauschbar mit der Funktion DATE_PART() verwendet werden. Allerdings kann EXTRACT() mit Zeitzonen umgehen.

DATE_TRUNC()

Kürzt einen Datums-/Zeitwert auf die angegebene Einheit (z. B. Jahr, Monat oder Tag) ab.

SELECT DATE_TRUNC('year', sale_date) AS year_start
FROM sales
WHERE product_name = 'Apples';
year_start
2024-01-01 00:00:00.000 +0100

MAKE_DATE()

Setzt ein vollständiges Datum aus Jahr, Monat und Tag zusammen.

SELECT MAKE_DATE('2024', '6', '1') AS date;
date
2024-06-01

GENERATE_SERIES()

Erzeugt eine Reihe von Datums-/Zeitwerten mit gleichen Abständen.

SELECT GENERATE_SERIES(
	   '2024-06-01 08:00:00'::timestamp, 
	   '2024-06-01 09:00:00'::timestamp, 
	   '20 minutes'::interval
             ) AS generated_timestamp;
generated_timestamp
2024-06-01 08:00:00.000
2024-06-01 08:20:00.000
2024-06-01 08:40:00.000
2024-06-01 09:00:00.000

Schauen Sie sich diese Kochbücher an, um mehr zu erfahren:

Formatieren von Datums- und Zeitwerten

PostgreSQL bietet mehrere Formatierungsfunktionen, die die Lesbarkeit Ihrer Berichte erleichtern. Dazu gehören TO_CHAR(), TO_DATE() und TO_TIMESTAMP().

TO_CHAR()

konvertiert einen Datums-/Zeitwert in eine formatierte Zeichenkette in einem bestimmten Format.

SELECT TO_CHAR(sale_date, 'MM/DD/YYYY') AS formatted_date
FROM sales
WHERE product_name = 'Apples';
SELECT TO_CHAR(sale_date, 'MM/DD/YYYY') AS formatted_date
FROM sales
WHERE product_name = 'Apples';
formatted_date
06/01/2024

Eine Übersicht über die verfügbaren Datums-/Zeitformate von PostgreSQL finden Sie hier.

TO_DATE()

Konvertiert eine Zeichenkette in einen Datumswert in einem bestimmten Format.

SELECT TO_DATE('2024-06-01', 'YYYY-MM-DD') AS date_value;
date_value
2024-06-01

TO_TIMESTAMP()

Konvertiert eine Zeichenkette in einen Zeitstempelwert in einem bestimmten Format.

SELECT TO_TIMESTAMP('2024-06-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
AS timestamp_value;
timestamp_value
2024-06-01 08:00:00.000 +0200

Schauen Sie sich diese Kochbücher an, um mehr zu erfahren:

Arbeiten mit PostgreSQL Datums- und Zeitfunktionen

Die Datums- und Zeitfunktionen, die PostgreSQL bietet, sind wichtige Werkzeuge für die Datenanalyse und das Reporting. Sie können uns helfen, Datenmuster im Laufe der Zeit zu verstehen, wie z. B. Verkaufstrends oder Spitzenwerte beim Website-Traffic. Mit diesen Funktionen können Daten nach Tag, Monat oder Jahr gruppiert werden, wodurch es einfacher wird, Trends zu erkennen und fundierte Entscheidungen zu treffen. Außerdem helfen sie uns dabei, unsere Berichte zu formatieren, damit sie leichter zu lesen und zu verstehen sind.

Da Daten oft in verschiedenen Datenbanken oder Dateien gespeichert werden, können Sie Ihre Daten im CSV-Format zur weiteren Verarbeitung in PostgreSQL importieren.


Wenn Sie eine praktische Erinnerung an die SQL-Funktionen benötigen, sehen Sie sich unser kostenloses Standard-SQL-Funktionen Cheat Sheet an. Sie können es herunterladen, ausdrucken und beim Arbeiten und Lernen immer griffbereit haben.

Wenn Sie Ihre PostgreSQL-Kenntnisse vertiefen möchten, sollten Sie sich unseren umfassenden Kurs SQL von A bis Z in PostgreSQL ansehen. Er bietet Hunderte von Übungen, in denen Sie alles lernen, was Sie als PostgreSQL-Profi wissen müssen - einschließlich fortgeschrittener Konzepte wie Fensterfunktionen, rekursive Abfragen und PostGIS. Viel Spaß beim Lernen!