Wie oft hast du schon Apps gesehen, die mit Datum und Uhrzeit arbeiten? Online-Bestellungen, Stundenpläne, Änderungsverlauf in der Datenbank – sie alle hängen davon ab, dass Zeit richtig gespeichert wird. PostgreSQL gibt dir dafür richtig starke Tools an die Hand, und Tabellen mit Zeit sind keine gruseligen Tabellen mit Zeigern und Minuten, sondern eine klare Struktur, mit der du Ereignisse analysieren und sortieren kannst.
Datums- und Zeittypen erlauben dir:
- Nur das Datum zu speichern
DATE, nur die UhrzeitTIMEoder beides zusammenTIMESTAMP. - Operationen wie das Hinzufügen von Tagen, das Berechnen von Differenzen zwischen Daten und das Filtern von Einträgen nach Zeitkriterien durchzuführen.
- Mit Zeitzonen zu arbeiten (aber das ist ein Thema für spätere Vorlesungen).
Datentypen: DATE, TIME, TIMESTAMP
Datentyp DATE
Der Typ DATE ist dafür da, nur das Datum zu speichern, ohne Uhrzeit. Er speichert Jahr, Monat und Tag. Das ist praktisch, wenn:
- Du den Geburtstag eines Users speichern willst.
- Das Datum eines Events wichtig ist, aber die Uhrzeit egal ist.
Beispiel-Format: YYYY-MM-DD (Jahr-Monat-Tag).
Beispiel:
| id | name - VARCHAR(100) | event_date - DATE |
|---|---|---|
| 1 | SQL Workshop | 2025-06-15 |
| 2 | Python | 2025-06-17 |
| 3 | Java Courses | 2025-06-25 |
Datentyp TIME
Der Typ TIME wird benutzt, um nur die Uhrzeit zu speichern. Das ist praktisch, wenn:
- Du einen Zeitplan speichern willst, zum Beispiel den Arbeitsbeginn.
- Die Uhrzeit wichtig ist, aber das Datum nicht.
Beispiel-Format: HH:MI:SS (Stunden:Minuten:Sekunden).
Beispiel:
| id | task_name - VARCHAR(100) | start_time - TIME |
|---|---|---|
| 1 | Team Meeting | 09:00:00 |
| 2 | Code Review | 11:30:00 |
| 3 | Client Call | 15:00:00 |
Datentyp TIMESTAMP
TIMESTAMP ist eine Kombination aus Datum und Uhrzeit. Das ist praktisch, wenn:
- Du einen Zeitpunkt speichern willst, zum Beispiel wann ein User sich eingeloggt hat.
- Du einen Zeitstempel brauchst, um Änderungen zu verfolgen (Logging).
Beispiel-Format: YYYY-MM-DD HH:MI:SS (Jahr-Monat-Tag Stunden:Minuten:Sekunden).
Beispiel:
| id | action - VARCHAR(100) | login_time - TIMESTAMP |
|---|---|---|
| 1 | User Login | 2023-10-15 14:30:00 |
| 2 | File Uploaded | 2023-10-15 15:10:00 |
| 3 | User Logout | 2023-10-15 16:45:00 |
Operationen mit Datum und Uhrzeit
Jetzt, wo wir wissen, welche Typen es gibt, lass uns anschauen, wie man damit arbeitet. PostgreSQL hat viele eingebaute Funktionen, um mit Datum und Zeit zu arbeiten.
Teile von Datum und Zeit extrahieren
Wenn du einen Zeitstempel (TIMESTAMP) hast und nur das Jahr, den Monat, den Tag oder die Stunde rausziehen willst, nimm die Funktion EXTRACT.
Beispiel:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2025-06-15 14:30:00') AS jahr;
-- Ergebnis: 2025
SELECT EXTRACT(MONTH FROM TIMESTAMP '2025-06-15 14:30:00') AS monat;
-- Ergebnis: 06
SELECT EXTRACT(DAY FROM TIMESTAMP '2025-06-15 14:30:00') AS tag;
-- Ergebnis: 15
Hinzufügen und Subtrahieren von Zeitintervallen
Willst du wissen, was in einer Woche ist? Oder was gestern war? Benutze Operationen mit Intervallen.
Beispiel:
-- 7 Tage zum aktuellen Datum hinzufügen
SELECT CURRENT_DATE + INTERVAL '7 days' AS naechste_woche;
-- 1 Monat abziehen
SELECT CURRENT_DATE - INTERVAL '1 month' AS letzter_monat;
Vergleich von Daten
Wie findest du raus, ob ein Event schon vorbei ist? Einfacher als einen Bug zu finden – vergleiche einfach die Werte.
Beispiel:
SELECT event_date
FROM events
WHERE event_date < CURRENT_DATE;
-- Wir wählen alle Events in der Vergangenheit aus
Mehr über Zeit- und Datumsfunktionen erfährst du in den nächsten Vorlesungen. Für jetzt reicht es, wenn du weißt, dass es diese Typen gibt – das reicht erstmal.
Probleme mit Zeitzonen und Zeitstandard
Auch wenn wir in dieser Vorlesung noch nicht ins Detail zu Zeitzonen gehen, ist es wichtig zu wissen, dass PostgreSQL den Typ TIMESTAMPTZ (Zeitstempel mit Zeitzone) unterstützt. Zum Beispiel zeigt 2023-10-15 14:30:00+02, dass diese Zeit zur Zeitzone UTC+2 gehört.
Wir werden das Thema auf jeden Fall noch im Kurs behandeln, aber erst später :P
Beispiel
Jetzt ist es Zeit, unser neues Wissen in der Praxis zu testen. Lass uns eine Tabelle erstellen, die den Stundenplan der Studenten speichert.
| id | subject_name | class_date - DATE | start_time - TIME | end_time - TIME | created_at - TIMESTAMP |
|---|---|---|---|---|---|
| 1 | Mathematics | 2023-10-16 | 09:00:00 | 10:30:00 | 2023-10-12 14:00:00 |
| 2 | Physics | 2023-10-16 | 11:00:00 | 12:30:00 | 2023-10-12 14:00:00 |
| 3 | Chemistry | 2023-10-17 | 09:00:00 | 10:30:00 | 2023-10-12 14:01:00 |
| 4 | Literature | 2023-10-17 | 11:00:00 | 12:30:00 | 2023-10-12 14:01:00 |
| 5 | Computer Science | 2023-10-18 | 10:00:00 | 11:30:00 | 2023-10-12 14:02:00 |
In ein paar Vorlesungen wirst du solche Tabellen mit SQL-Queries in der Datenbank selbst erstellen. Bis dahin einfach mal anschauen und genießen :)
Typische Fehler
Format von Datum und Zeit: Beim Einfügen von Daten ist das richtige Format wichtig: YYYY-MM-DD für Daten und HH:MI:SS für Uhrzeiten. PostgreSQL versteht dich nicht, wenn du versuchst, ein Datum wie "15/10/2023" einzufügen.
Falscher Datentyp: Wenn du versuchst, einen Textwert in ein DATE-Feld zu schreiben, gibt es einen Fehler.
Fehler bei Zeitintervallen: Wenn du zum Beispiel 30 Tage zu Februar addierst, verarbeitet PostgreSQL das korrekt, aber das Datum kann dann schon im März liegen.
Jetzt kennst du die Datentypen für Arbeit mit Datum und Zeit in PostgreSQL. In echten Projekten hilft dir das, Stundenpläne zu verwalten, Events zu loggen oder wichtige Ereignisse im System zu tracken!
GO TO FULL VERSION