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!
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