8th Jul 2024 10 Leseminuten PostgreSQL Datumsfunktionen Martyna Sławińska PostgreSQL Datums und Zeitfunktionen Inhaltsverzeichnis Datum- und Zeit-Datentypen in PostgreSQL Ein Überblick über die Datums- und Zeitfunktionen in PostgreSQL Vergleich von Datums- und Zeitwerten Gleichheitsoperator (=) Nicht-Gleichheitsoperator (!= oder <>) Operator "Größer als" (>) Operator "Größer als" oder "Gleich" (>=) Kleiner-als (<) Operator Kleiner-als-gleich (<=) Operator BETWEEN-Operator NOT BETWEEN-Operator Aktuelle Datums- und Zeitwerte abrufen JETZT() AKTUELLES_DATUM AKTUELLE_ZEIT CURRENT_TIMESTAMP Arithmetische Operationen auf Datums- und Zeitwerten Manipulation von Datums- und Zeitwerten DATE_PART() EXTRACT() DATE_TRUNC() MAKE_DATE() GENERATE_SERIES() Formatieren von Datums- und Zeitwerten TO_CHAR() TO_DATE() TO_TIMESTAMP() Arbeiten mit PostgreSQL Datums- und Zeitfunktionen 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: Wie man 2 Daten in der WHERE-Klausel in SQL vergleicht Wie man Datumswerte in SQL vergleicht Wie man Datumswerte in SQL vergleicht Sortieren nach Datum in PostgreSQL oder Oracle 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: Wie man das aktuelle Datum in PostgreSQL abfragt Wie man die aktuelle Zeit in PostgreSQL abfragt Wie man das aktuelle Datum und die aktuelle Zeit (ohne Zeitzone) in PostgreSQL abfragt Wie man das aktuelle Datum und die aktuelle Zeit mit Zeitzonen-Offset in PostgreSQL abfragt Wie erhalte ich die aktuelle Zeit (ohne Zeitzone) in PostgreSQL? 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: Wie man die Datumsdifferenz in PostgreSQL/Oracle berechnet Wie man die Zeitstempel-Differenz in PostgreSQL berechnet Wie man das Intervall zwischen zwei Daten in PostgreSQL findet Wie man das Datum von gestern in PostgreSQL ermittelt 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: Wie man in PostgreSQL nach Monat gruppiert Wie man in SQL nach Jahr gruppiert Wie man die Wochennummer aus einem Datum in PostgreSQL extrahiert Wie man Tagesnamen in PostgreSQL ausliest Wie man den Tag des Jahres aus einem Datum in PostgreSQL extrahiert Sortieren nach Monatsnamen in PostgreSQL oder Oracle Abrufen des vorherigen Monats in SQL 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: Wie man ein Datum in PostgreSQL formatiert Wie man in PostgreSQL einen String in ein Datum konvertiert Wie man eine Zeichenkette in einen Zeitstempel in PostgreSQL konvertiert 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! Tags: PostgreSQL Datums und Zeitfunktionen