Direkt zum Inhalt
HeimAnleitungenSQL

Beherrschen von SQL-Datumsvergleichen: Abfrage nach Daten, die größer als ein bestimmtes Datum sind

Lerne, wie du in SQL ein Datum abfragen und filtern kannst, das größer als ein bestimmtes Datum ist. Vergleiche, wie sich die Logik für das Datum größer als in MySQL, PostgreSQL und SQL Server unterscheidet.
Aktualisierte 11. Sept. 2024  · 11 Min. lesen

Für eine effektive Datenbankverwaltung und -analyse ist es wichtig zu wissen, wie man nach Daten sucht, die größer als ein bestimmtes Datum sind. Dieses Tutorial bietet einen umfassenden Leitfaden für die Durchführung von Datumsvergleichen in SQL in verschiedenen SQL-Datenbanksystemen, darunter SQL Server, PostgreSQL und Oracle. Ganz gleich, ob du mit der Analyse historischer Daten, der Erstellung von Berichten oder dem Filtern von Datensätzen zu tun hast, die Beherrschung dieser Technik wird deine SQL-Abfragefähigkeiten verbessern.

Am Ende dieses Handbuchs wirst du in der Lage sein:

  • Verstehe die Feinheiten der Datumsformate und -funktionen in verschiedenen SQL-Datenbanken, einschließlich SQL Server, PostgreSQL und Oracle. 
  • Wende praktische Beispiele auf reale Szenarien an

Wenn du als Datenanalytiker/in oder Datenwissenschaftler/in bereit bist, mehr zu lernen, empfehle ich dir die Teilnahme am SQL Fundamentals Skill Track von DataCamp, um dich mit der Abfrage von Daten aus Datenbanken vertraut zu machen. Du kannst auch den Kurs Erstellen von PostgreSQL-Datenbanken belegen, um die Besonderheiten von PostgreSQL zu lernen.

Einführung in SQL-Datum-Vergleiche

Der Datumsvergleich ist in SQL wichtig, da er es Datenexperten ermöglicht, Daten während der Analyse zu filtern und zu sortieren. Die Methode ist besonders nützlich für die Finanzberichterstattung oder die Bestandsverwaltung, die eine Trendanalyse erfordert.

Der SQL-Operator "größer als" (>) wird bei Datumsangaben verwendet, um zwei Datumswerte zu vergleichen. Wenn du den Operator "größer als" in eine SQL-Abfrage mit Datumsangaben einfügst, gibt die Abfrage Datensätze zurück, deren Datum später als das angegebene Datum liegt. Die folgende Abfrage gibt zum Beispiel Zeilen in der Tabelle Orders zurück, bei denen OrderDate später als 2023-01-01 ist.

SELECT *
FROM Orders
WHERE OrderDate > '2023-01-01';

Beginnen wir mit einem kurzen Überblick über die grundlegenden SQL-Operatoren, die zum Filtern von Daten verwendet werden können. Diese Operatoren werden auch in unserem Spickzettel zu den SQL-Grundlagen behandelt, den du dir ansehen kannst, bevor du die folgenden Beispiele ausprobierst.

Äquivalent zu (=)

Der = Operator wird in SQL verwendet, um zu vergleichen, ob zwei Werte gleich sind. Nachfolgend findest du ein Beispiel, in dem der Operator mit einem Datumswert verwendet wird. Die SQL-Abfrage gibt Zeilen in der Tabelle Orders zurück, in denen OrderDate gleich 2023-01-01 ist.

-- Select all orders placed on January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate = '2023-01-01';

Nicht gleich (!= oder <>)

Der != oder <> Operator prüft zwei Werte und gibt denjenigen zurück, der nicht mit dem referenzierten Wert übereinstimmt. Wenn du zum Beispiel einen Datumswert angibst, gibt der != oder <> Operator Zeilen zurück, die nicht mit dem referenzierten Datum übereinstimmen. Du kannst auch unseren SQL NOT EQUAL Operator lesen: A Beginner's Guide Tutorial, um die Feinheiten zu lernen.

-- Select all orders that were not placed on January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate != '2023-01-01';
-- Alternative syntax using <>
SELECT *
FROM Orders
WHERE OrderDate <> '2023-01-01';

Weniger als (<)

Der < Operator wird in SQL verwendet, um zu prüfen, ob der Wert auf der linken Seite kleiner ist als auf der rechten. Wenn du sie in einer SQL-Abfrage mit Datumswerten verwendest, gibt die Abfrage Datensätze zurück, deren Datum vor dem angegebenen Datum liegt. Die folgende Abfrage gibt zum Beispiel Zeilen in der Tabelle Orders zurück, bei denen OrderDate früher als 2023-01-01 ist.

-- Select all orders placed before January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate < '2023-01-01';

Größer als oder gleich (>=)

Der >= Operator prüft, ob die Werte auf der linken Seite des Operators größer oder gleich dem Wert auf der rechten Seite sind. Wenn der Operator in SQL verwendet wird, um einen Datumswert abzufragen, werden nur Datensätze zurückgegeben, deren Datumswerte gleich oder größer als der Wert sind, auf den verwiesen wird.

-- Select all orders placed on or after January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate >= '2023-01-01';

Weniger als oder gleich (<=)

Der <= Operator wird in SQL verwendet, um zu prüfen, ob die Werte auf der linken Seite des Operators kleiner oder gleich dem Wert auf der rechten Seite sind. Wenn der Operator verwendet wird, um einen Datumswert abzufragen, werden nur Datensätze zurückgegeben, deren Datumswerte gleich oder kleiner als der Wert sind, auf den verwiesen wird.

-- Select all orders placed on or before January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate <= '2023-01-01';

Datumsvergleich in SQL Server

Wir können Daten in SQL Server mit den folgenden Operatoren vergleichen: <, <=, >, >=, und =. Wir werden jedoch die folgenden Themen behandeln:

Verwendung des "Größer als"-Operators (>)

Der "Größer als"-Operator (>) wird in SQL Server verwendet, um Daten herauszufiltern, die später liegen als das Datum, das auf der rechten Seite des Operators verglichen wird. Die folgende Abfrage filtert zum Beispiel die Tabelle Orders und gibt Datensätze von Bestellungen zurück, die nach OrderDate 2023-01-01 aufgegeben wurden.

-- Select all orders delivered after January 1, 2023
SELECT *
FROM Orders
WHERE DeliveryDate > '2023-01-01';

Verwendung der Funktion GETDATE()

Die Funktion GETDATE() in SQL Server gibt das aktuelle Datum zurück, wie es im System des Benutzers gespeichert ist. Daher kannst du diese Funktion verwenden, um Daten abzufragen und Zeilen herauszufiltern, deren Datum größer als das aktuelle Datum ist.

-- Select all orders delivered after the current date and time
SELECT *
FROM Orders
WHERE DeliveryDate > GETDATE();

BETWEEN für Datumsbereiche verwenden

Der BETWEEN Operator in SQL wird verwendet, um Werte zwischen einem bestimmten Bereich zu filtern. Wenn du sie in SQL Server mit Datumsangaben verwendest, kannst du Zeilen filtern, die Daten innerhalb des angegebenen Datums enthalten. Die Ergebnisse enthalten sowohl das Start- als auch das Enddatum wie in der Abfrage angegeben.

-- Select all orders delivered between January 1, 2023, and December 31, 2023
SELECT *
FROM Orders
WHERE DeliveryDate BETWEEN '2023-01-01' AND '2023-12-31';

CAST und CONVERT für Datumsbereiche verwenden

Du kannst auch die Funktionen CAST und CONVERT verwenden, um Fehler zu vermeiden. Diese Funktionen sorgen dafür, dass die Datumswerte richtig interpretiert und formatiert werden.

-- Convert a string to a date
SELECT CAST('2023-06-26' AS DATE) AS ConvertedDate;

-- Convert a string to a datetime
SELECT CAST('2023-06-26 14:30:00' AS DATETIME) AS ConvertedDateTime;
-- Convert a string to a date using CONVERT
SELECT CONVERT(DATE, '2023-06-26') AS ConvertedDate;

-- Convert a string to a datetime using CONVERT
SELECT CONVERT(DATETIME, '2023-06-26 14:30:00') AS ConvertedDateTime;

Datumsvergleich in PostgreSQL

PostgreSQL hat einige verschiedene Klauseln, um Daten zu vergleichen. Wir besprechen einige davon im Folgenden.

Verwendung des "Größer als"-Operators (>)

Ähnlich wie in der SQL Server-Datenbank filtert der > Operator in PostgreSQL das Datum, das größer als das Vergleichsdatum ist.

-- Select all orders placed after January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate > '2023-01-01';

Verwendung der EXTRACT-Funktion

Die Funktion EXTRACT wird in PostgreSQL verwendet, um Datumsfelder wie Jahr, Monat oder Tag abzurufen. In der folgenden Abfrage filtert die EXTRACT Klausel Datensätze für das Jahr 2023.

-- Select all orders placed in the year 2023
SELECT *
FROM Orders
WHERE EXTRACT(YEAR FROM OrderDate) = 2023;

Verwendung der Funktion INTERVALL

Die Funktion INTERVAL wird in PostgreSQL verwendet, um einige Datumsberechnungen durchzuführen. INTERVAL ermöglicht es dir, bestimmte Zeitspannen zu einem Datum hinzuzufügen oder davon abzuziehen.

-- Select all orders placed in the last 30 days
SELECT *
FROM Orders
-- Filter orders placed within the last 30 days from the current date
WHERE OrderDate > NOW() - INTERVAL '30 days';

Verwendung der Funktion DATE_PART

Mit der Funktion DATE_PART kannst du ein Teilfeld aus dem Datumswert extrahieren. Dieses Unterfeld kann entweder das Datum oder die Uhrzeit sein. Die folgende Abfrage gibt die im März aufgegebenen Bestellungen zurück und ergibt einen doppelt genauen Wert von 3 für den dritten Monat.

-- Select all orders placed in March
SELECT *
FROM Orders
WHERE DATE_PART('month', OrderDate) = 3;

Verwendung der Funktion TO_DATE

Die Funktion TO_DATE in PostgreSQL wandelt eine angegebene Zeichenkette in einen Datumswert um, der auf dem angegebenen Format basiert. In der folgenden Abfrage wird der Datumswert als String angegeben. Du konvertierst also als Datum in das Format YYYY-MM-DD.

-- Select all orders placed on January 1, 2023, using a string date
SELECT *
FROM Orders
WHERE OrderDate = TO_DATE('2023-01-01', 'YYYY-MM-DD');

BETWEEN für Datumsbereiche verwenden

Wie SQL Server filtert die BETWEEN-Klausel in PostgreSQL Daten innerhalb eines bestimmten Bereichs. Bei Werten, die Datumsangaben enthalten, filtert die Funktion BETWEEN Zeilen zwischen den angegebenen Datumsangaben und gibt sie zurück. Diese Daten sind auch in den Ergebnissen enthalten.

-- Select all orders placed between January 1, 2023, and December 31, 2023
SELECT *
FROM Orders
WHERE OrderDate BETWEEN '2023-01-01' AND '2023-12-31';

Datumsvergleich in Oracle

Verwendung des "Größer als"-Operators (>)

Der > Operator filtert Daten heraus, die später als das Vergleichsdatum liegen.

-- Select all active users with an end date in the future
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is in the future
  AND EndDate > SYSDATE;

Umgang mit NULL-Daten und komplexen Bedingungen

Beim Vergleichen von Daten in einer Oracle-Datenbank ist es wichtig, komplexe Szenarien wie leere Daten anzugeben. In diesem Fall verwenden wir die IS NULL Klausel, um Datensätze zu filtern, die kein Datum enthalten.

-- Select all active users with either a future end date or no end date (NULL)
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is either in the future or is NULL (no end date)
  AND (EndDate > SYSDATE OR EndDate IS NULL);

BETWEEN für Datumsbereiche verwenden

Die BETWEEN Klausel wird in Oracle auch verwendet, um Daten innerhalb eines bestimmten Bereichs zu filtern. Bei Werten, die ein Datum enthalten, filtert die Funktion BETWEEN die Datensätze zwischen den angegebenen Daten und gibt sie zurück. Diese Daten sind auch in den Ergebnissen enthalten.

-- Select all active users with an end date between the current date and a specified future date (e.g., end of the year)
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is between the current date and a specified future date (e.g., December 31, 2023)
  AND EndDate BETWEEN SYSDATE AND DATE '2023-12-31';

Häufige Fallstricke und bewährte Praktiken

Ich bin auf Probleme mit Datumsangaben und dem Operator "größer als" in SQL gestoßen. Hier sind einige häufige Fehler, die ich entdeckt habe, und Tipps, wie du sie vermeiden kannst.

Inkonsistente Datumsformate

Wenn du in deinen Abfragen inkonsistente Datumsformate verwendest, führt das zu Fehlern. Du erhältst möglicherweise nicht die gewünschten Ergebnisse, wenn du Datumsformate wie YYYY-MM-DD und MM-DD-YYYY mischst. 

Um diese Probleme zu vermeiden, solltest du immer das Standard-Datumsformat verwenden. Du kannst das Datum auch in dein bevorzugtes Format oder nach lokalen Konventionen konvertieren, indem du TO_DATE in PostgreSQL- oder Oracle-Datenbanken verwendest. Für SQL Server kannst du die Funktionen CAST und CONVERT verwenden.

-- Convert a string to a date
SELECT CAST('2023-06-26' AS DATE) AS ConvertedDate;

-- Convert a string to a datetime
SELECT CAST('2023-06-26 14:30:00' AS DATETIME) AS ConvertedDateTime;
-- Convert a string to a date using CONVERT
SELECT CONVERT(DATE, '2023-06-26') AS ConvertedDate;

-- Convert a string to a datetime using CONVERT
SELECT CONVERT(DATETIME, '2023-06-26 14:30:00') AS ConvertedDateTime;

Umgang mit Zeitzonen

Wenn du Daten über mehrere Zeitzonen hinweg bearbeitest, erhältst du möglicherweise ungenaue Ergebnisse. Außerdem kann die Nichtberücksichtigung von Zeitzonenunterschieden bei der Datumsumrechnung zu Fehlern führen.

Deshalb empfehle ich dir, deine Daten in UTC (Coordinated Universal Time) zu speichern und die eingebauten Zeitzonenfunktionen zu verwenden, um Daten umzurechnen.

-- Store dates in UTC and convert to local time zone
SELECT *
FROM Orders
-- Filter orders where the OrderDate in UTC is greater than the current date in the 'America/New_York' time zone
WHERE OrderDate AT TIME ZONE 'UTC' > SYSDATE AT TIME ZONE 'America/New_York';
-- Use time zone functions for accurate comparison
SELECT *
FROM Users
-- Filter users where the EndDate in UTC is greater than the current date in UTC
WHERE EndDate AT TIME ZONE 'UTC' > SYSDATE AT TIME ZONE 'UTC';

Vermeide häufige Fehler bei Daten

Wenn du mit Daten arbeitest, ist es wichtig, Fehler zu vermeiden, indem du nur die Werte abrufst, die du für deine Analyse brauchst. Du kannst zum Beispiel die Zeitkomponente in einem Datumswert weglassen, wenn sie für deine Analyse irrelevant ist. Behandle die NULL Werte explizit, um Fehler zu vermeiden, vor allem, wenn Datumswerte den Fehler enthalten können.

Schreiben von lesbaren und wartbaren Abfragen

Es kann sein, dass du komplexe und verschachtelte Abfragen schreibst, was es schwierig macht, die verschiedenen Klauseln zu lesen und zu verfolgen. Wenn du keine Kommentare in deinen Code einfügst, ist es auch schwer zu erklären, was er tut.

Daher empfehle ich dir, Kommentare einzufügen, die die Logik hinter den Klauseln erklären. Um die Abfragen lesbar zu machen, kannst du auch einfache Unterabfragen oder Common Table Expressions (CTEs) verwenden. In unserem Kurs Reporting in SQL erfährst du mehr über das Schreiben lesbarer und wartbarer Abfragen für Analysen und Berichte.

Ein Hinweis darauf, warum sich die SQL-Methoden unterscheiden

Die Vielfalt der SQL-Methoden für Datumsvergleiche in verschiedenen Datenbanksystemen wie SQL Server, PostgreSQL und Oracle ergibt sich aus der einzigartigen Entwicklung und Designphilosophie der einzelnen Datenbankmanagementsysteme. Jedes System wurde unabhängig voneinander entwickelt und entsprach unterschiedlichen Nutzerbedürfnissen und Kompatibilitätsanforderungen, was zu unterschiedlichen Implementierungen von SQL-Standards und zusätzlichen proprietären Funktionen führte.

Zum Beispiel:

  • Der von Microsoft entwickelte SQL Server verfügt über Funktionen und eine Syntax, die sich eng an andere Microsoft-Produkte anlehnt und auf Integration und Benutzerfreundlichkeit im Windows-Ökosystem abzielt.
  • PostgreSQL ist ein Open-Source-Projekt mit einem starken Fokus auf Erweiterbarkeit. Diese Flexibilität fördert eine Vielzahl von Datumsfunktionen und Operatoren, die von der Community optimiert oder erweitert werden können.
  • Oracle konzentriert sich in der Regel auf hohe Skalierbarkeit und Zuverlässigkeit für Unternehmensanwendungen, was zu spezifischen Optimierungen bei der Verarbeitung von Daten und anderen Datentypen führt, oft mit dem Fokus auf komplexe, hochvolumige Transaktionsumgebungen.

Fazit

Ich möchte dich ermutigen, die verschiedenen Fähigkeiten zu üben, damit du weißt, wann du die SQL-Funktionen in realen Szenarien anwenden musst. Ziehe in Erwägung, die DataCamp-Kurse SQL-Grundlagen und SQL-Mittelstufe zu besuchen. Ich empfehle auch den Kurs Associate Data Analyst in SQL für angehende Datenanalysten und Datenwissenschaftler, der dir hilft, die verschiedenen Analysetechniken zu beherrschen. Diese Kurse helfen dir auch bei der Vorbereitung auf die SQL Associate-Zertifizierung, die sich gut in deinem Lebenslauf macht. 

Erhalte eine Top-SQL-Zertifizierung

Stelle deine SQL-Kenntnisse unter Beweis und bringe deine Datenkarriere voran.

Werde SQL-zertifiziert

Photo of Allan Ouko
Author
Allan Ouko
LinkedIn
Ich verfasse Artikel, die Datenwissenschaft und Analytik vereinfachen und leicht verständlich und zugänglich machen.

Häufig gestellte Fragen

Was ist ein Vergleichsoperator?

Die Vergleichsoperatoren vergleichen zwei Werte und geben als Ergebnis zurück, ob die Werte des verglichenen Wertes wahr oder falsch sind.

Welche Operatoren werden häufig in SQL-Datumswerten verwendet?

Die üblichen Operatoren, die in SQL-Datumswerten verwendet werden, sind gleich (=), größer als (>), kleiner als (<), größer als oder gleich (>=), weniger als oder gleich (<=).

Wann wird der Operator BETWEEN in SQL verwendet?

Der BETWEEN Operator filtert Datensätze innerhalb eines bestimmten Bereichs.

Welchen Operator sollte ich verwenden, wenn meine Daten NULL-Werte haben?

Du solltest die IS NULL Klausel einfügen, um Nullwerte zu behandeln und Fehler in den Abfrageergebnissen zu vermeiden.

Was soll ich tun, wenn meine SQL-Abfrage beim Filtern des Datumswertes Fehler liefert?

Überprüfe, ob deine Daten im richtigen Format sind. Wenn nicht, konvertiere sie in ein einheitliches Format wie YYYY-MM-DD.

Themen

Lerne SQL mit DataCamp

Zertifizierung verfügbar

Course

Einführung in SQL

2 hr
792.5K
Lerne in nur zwei Stunden, wie man relationale Datenbanken mit SQL erstellt und abfragt.
See DetailsRight Arrow
Start Course
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

15 Min.

See MoreSee More