PostgreSQL - Datum/Zeit-Funktionen und Operatoren

Hallo, ambitionierte Programmierer! Heute machen wir uns auf eine aufregende Reise durch die Welt der Datum und Zeit in PostgreSQL. Als Ihr freundlicher Nachbarschaftsinformatiklehrer stehe ich hier, um Sie mit der gleichen Begeisterung durch diese Konzepte zu führen, die ich in den letzten 15 Jahren im Klassenzimmer hatte. Holen Sie sich Ihre virtuellen Notizzettel und tauchen wir ein!

Date/Time Functions & Operators

Verständnis von Datum und Zeit in PostgreSQL

Bevor wir die Funktionen und Operatoren erkunden, lassen Sie uns einen Moment innehalten, um zu verstehen, warum Datum und Zeit im Programmieren so entscheidend sind. Stellen Sie sich vor, Sie bauen eine Zeitmaschine (würde das nicht toll sein?). Sie müssten genau wissen, wann und wo Sie sind und wohin (oder wann) Sie gehen möchten. Das ist im Grunde, was wir mit Datenbanken machen - wir verfolgen, wann Dinge passieren, wie lange sie dauern und sogar zukünftige Ereignisse vorhersagen.

Nun schauen wir uns einige der nützlichsten Datum und Zeit-Funktionen in PostgreSQL an.

AGE(timestamp, timestamp) und AGE(timestamp)

Die AGE-Funktion ist wie ein Freund, der immer weiß, wie lange etwas her ist. Sie berechnet den Unterschied zwischen zwei Zeitstempeln oder zwischen einem Zeitstempel und dem aktuellen Datum.

Beispiel 1: Alter berechnen

SELECT AGE(TIMESTAMP '2023-05-15', TIMESTAMP '1990-01-01');

Dies wird etwa folgendes zurückgeben:

33 Jahre 4 Monate 14 Tage

Was passiert hier? Wir bitten PostgreSQL, den Zeitunterschied zwischen dem 1. Januar 1990 und dem 15. Mai 2023 zu berechnen. Es ist, als würden wir fragen: "Wie alt wäre jemand, wenn er am 1. Januar 1990 geboren worden wäre?"

Beispiel 2: Alter vom aktuellen Datum berechnen

SELECT AGE(TIMESTAMP '1990-01-01');

Dies wird den Zeitunterschied zwischen dem 1. Januar 1990 und dem aktuellen Datum zurückgeben. Es ist, als würden wir fragen: "Wie alt ist jemand, der am 1. Januar 1990 geboren wurde?"

Aktuelle Datum/Zeit-Funktionen

Diese Funktionen sind wie die eingebaute Uhr und der Kalender Ihrer Datenbank. Sie sagen Ihnen, wie spät es ist.

Beispiel 3: Aktuelles Datum und Zeit erhalten

SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;

Dies wird das heutige Datum, die aktuelle Uhrzeit und beides kombiniert zurückgeben. Es ist, als würden Sie Ihre Datenbank fragen: "Welcher Tag ist heute, wie spät ist es und was ist der exakte Moment jetzt?"

DATE_PART und DATE_TRUNC Funktionen

DATE_PART ist wie eine Zeitmaschine, die auf spezifische Teile eines Datums oder einer Uhrzeit zoomen kann. DATE_TRUNC, andererseits, ist wie eine Zeitvereinfacher - sie rundet herunter auf eine spezifische Zeiteinheit.

Beispiel 4: Teile eines Datums extrahieren

SELECT DATE_PART('jahr', TIMESTAMP '2023-05-15 10:30:00');
SELECT DATE_PART('stunde', TIMESTAMP '2023-05-15 10:30:00');

Die erste Abfrage wird 2023 zurückgeben, und die zweite wird 10. Es ist, als würden wir fragen: "Aus welchem Jahr stammt dieser Zeitstempel?" und "Welche Stunde des Tages ist dieser Zeitstempel?"

Beispiel 5: Ein Zeitstempel abrunden

SELECT DATE_TRUNC('stunde', TIMESTAMP '2023-05-15 10:30:00');

Dies wird '2023-05-15 10:00:00' zurückgeben. Es ist, als würden wir sagen: "Gib mir diesen Zeitstempel, aber setze Minuten und Sekunden auf Null."

EXTRACT Funktion

EXTRACT ist ähnlich wie DATE_PART, aber mit einer etwas anderen Syntax. Es ist eine andere Möglichkeit, spezifische Teile eines Datums oder einer Uhrzeit herauszuziehen.

Beispiel 6: Aus einem Zeitstempel extrahieren

SELECT EXTRACT(JAHR FROM TIMESTAMP '2023-05-15 10:30:00');
SELECT EXTRACT(STUNDE FROM TIMESTAMP '2023-05-15 10:30:00');

Diese Abfragen werden 2023 und 10 zurückgeben, respectively, genau wie unsere DATE_PART-Beispiele.

ISFINITE Funktionen

Diese Funktionen sind wie die Realitätsprüfung Ihrer Datenbank. Sie sagen Ihnen, ob ein Datum, Zeitstempel oder Intervall ein echtes, endliches Wert ist oder eines dieser speziellen Unendlichkeitswerte.

Beispiel 7: Finiteness überprüfen

SELECT ISFINITE(DATE '2023-05-15');
SELECT ISFINITE(TIMESTAMP 'unendlich');

Die erste Abfrage wird wahr zurückgeben, während die zweite falsch zurückgibt. Es ist, als würden wir fragen: "Ist der 15. Mai 2023 ein echter Termin?" (ja) und "Ist 'unendlich' ein echter Zeitstempel?" (nein).

JUSTIFY Funktionen

Diese Funktionen sind wie die Zeitanpasser Ihrer Datenbank. Sie nehmen Intervalle mit einigen seltsamen Werten und passen sie an eine mehr standardisierte Darstellung an.

Beispiel 8: Intervalle ausgleichen

SELECT JUSTIFY_DAYS(INTERVAL '30 tage');
SELECT JUSTIFY_HOURS(INTERVAL '36 stunden');
SELECT JUSTIFY_INTERVAL(INTERVAL '1 monat 36 stunden');

Diese könnten folgende Werte zurückgeben:

1 monat
1 tag 12 stunden
1 monat 1 tag 12 stunden

Es ist, als würden wir sagen: "Nehmen Sie diese Zeitperioden und drücken Sie sie in einer standardmäßigeren Weise aus."

Zusammenfassung der Funktionen

Hier ist eine praktische Tabelle, die alle Funktionen zusammenfasst, die wir besprochen haben:

Funktion Beschreibung
AGE() Berechnet den Unterschied zwischen Zeitstempeln
CURRENT_DATE Gibt das aktuelle Datum zurück
CURRENT_TIME Gibt die aktuelle Uhrzeit zurück
CURRENT_TIMESTAMP Gibt das aktuelle Datum und die aktuelle Uhrzeit zurück
DATE_PART() Extracts a specific part of a date/time
DATE_TRUNC() Truncates a timestamp to a specified precision
EXTRACT() Extracts a specific field from a date/time
ISFINITE() Checks if a date/time/interval is finite
JUSTIFY_DAYS() Adjusts days in an interval
JUSTIFY_HOURS() Adjusts hours in an interval
JUSTIFY_INTERVAL() Adjusts an entire interval

Und das war's, Leute! Wir haben gemeinsam durch die Zeit (Funktionen) gereist, Teile von Daten extrahiert, die Finiteness des Unendlichen überprüft und sogar Intervalle ausgeglichen. Erinnern Sie sich daran, dass die Arbeit mit Datum und Zeit in Datenbanken für viele Anwendungen entscheidend ist, von der Verfolgung der Benutzeraktivität bis hin zur Planung von Ereignissen.

Während Sie Ihre Programmierreise fortsetzen, werden Sie diese Funktionen unheimlich nützlich finden. Sie sind wie das Schweizer Taschenmesser der Zeitmanipulation in Ihrer Datenbankwerkzeugkiste. Bleiben Sie amüsiert, bleiben Sie neugierig, und bevor Sie es wissen, werden Sie ein Zeitlord der Datenbankwelt sein!

Credits: Image by storyset