🧚 Hör mal! Beekeeper Studio ist eine schnelle, moderne Open-Source-GUI für Datenbanken Download
9. September 2024 Von Matthew Rathbone

Wochentage mit Oracles TO_CHAR()-Funktion erkennen

Das folgende Beispiel zeigt, wie du mit TO_CHAR() nur die Zeilen zurückgibst, deren Datum auf einen Wochentag fällt.

SELECT order_id, order_date
FROM orders
WHERE TO_CHAR(order_date, 'DY') NOT IN ('SAT', 'SUN');

Erwartete Ausgabe:

ORDER_ID | ORDER_DATE
---------|------------
1001     | 04-SEP-2023
1002     | 05-SEP-2023
1005     | 06-SEP-2023
1010     | 07-SEP-2023

In dieser Abfrage:

  • TO_CHAR(order_date, 'DY') extrahiert den abgekürzten Tagesnamen aus der Spalte order_date.
  • Die Klausel NOT IN ('SAT', 'SUN') filtert alle Zeilen heraus, bei denen der Tag ein Samstag oder Sonntag ist.

Mit vollständigen Tagesnamen arbeiten

Wenn deine Datenbank auf ein Gebietsschema eingestellt ist, in dem die abgekürzten Tagesnamen abweichen, oder du lieber mit vollständigen Tagesnamen arbeitest, kannst du die Abfrage so anpassen:

SELECT employee_id, work_date
FROM employee_schedule
WHERE TO_CHAR(work_date, 'DAY') NOT IN ('SATURDAY', 'SUNDAY');

Erwartete Ausgabe:

EMPLOYEE_ID | WORK_DATE
------------|-----------
200         | 01-SEP-2023
201         | 02-SEP-2023
202         | 03-SEP-2023

Wochentage zwischen zwei Datumswerten filtern

Oft willst du Datensätze zwischen zwei Datumswerten abrufen, aber nur für Wochentage. So erweiterst du die Logik dafür.

Beispielabfrage: Wochentage zwischen zwei Datumswerten auswählen

SELECT invoice_id, invoice_date
FROM invoices
WHERE invoice_date BETWEEN TO_DATE('2023-09-01', 'YYYY-MM-DD') 
                       AND TO_DATE('2023-09-10', 'YYYY-MM-DD')
AND TO_CHAR(invoice_date, 'DY') NOT IN ('SAT', 'SUN');

Erwartete Ausgabe:

INVOICE_ID | INVOICE_DATE
-----------|--------------
3001       | 01-SEP-2023
3005       | 04-SEP-2023
3007       | 05-SEP-2023
3010       | 06-SEP-2023

Umgang mit verschiedenen Sprachen und Gebietsschemas

Oracle zeigt Tagesnamen eventuell abhängig von den NLS-Einstellungen (National Language Support) deiner Session an. Ist deine Session zum Beispiel auf eine andere Sprache als Englisch eingestellt, können die Tagesabkürzungen wie ‘MON’, ‘TUE’ anders lauten. Die aktuellen Einstellungen prüfst du mit:

SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_TERRITORY';

Bei Bedarf kannst du diese Einstellungen auf Session-Ebene überschreiben, um konsistente Ergebnisse zu erhalten:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';

Damit wird das Territorium auf ‘AMERICA’ gesetzt, sodass Tagesnamen wie ‘MON’, ‘TUE’ usw. verwendet werden.

Die Funktion NEXT_DAY() verwenden

Manchmal möchtest du ausgehend von einem bestimmten Datum den nächsten Wochentag berechnen. Oracles Funktion NEXT_DAY() hilft dir, das nächste Vorkommen eines bestimmten Wochentags zu finden.

Beispielabfrage: Den nächsten Wochentag finden

SELECT NEXT_DAY(SYSDATE, 'MONDAY') AS next_monday
FROM dual;

Erwartete Ausgabe:

NEXT_MONDAY
------------
11-SEP-2023

In diesem Fall gibt NEXT_DAY(SYSDATE, 'MONDAY') den nächsten ‘Montag’ nach dem aktuellen Datum zurück.

Fazit

Wochentage in Oracle SQL zu filtern ist in vielen Anwendungen eine häufige Anforderung. Indem du mit der Funktion TO_CHAR() den Wochentag extrahierst und Wochenenden herausfilterst, kannst du ausschließlich mit Wochentagen arbeiten. In komplexeren Szenarien lassen sich Funktionen wie NEXT_DAY() und Datumsbereiche kombinieren, um anspruchsvollere Abfragen zu erstellen.

Weitere Artikel, die dir gefallen könnten:

Beekeeper Studio ist eine kostenlose & quelloffene Datenbank-GUI

Das beste SQL-Abfrage- & Editor-Tool, das ich je benutzt habe. Es bietet alles, was ich zum Verwalten meiner Datenbank brauche. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio ist schnell, intuitiv und einfach zu bedienen. Beekeeper unterstützt jede Menge Datenbanken und läuft hervorragend auf Windows, Mac und Linux.

Die Linux-Version von Beekeeper hat 100% des Funktionsumfangs, ohne Abstriche und ohne Kompromisse.

Was Nutzer über Beekeeper Studio sagen

★★★★★
„Beekeeper Studio hat meinen alten SQL-Workflow komplett ersetzt. Es ist schnell, intuitiv und macht die Arbeit mit Datenbanken wieder zum Vergnügen.“
— Alex K., Datenbankentwickler
★★★★★
„Ich habe viele Datenbank-GUIs ausprobiert, aber Beekeeper findet die perfekte Balance zwischen Funktionsumfang und Einfachheit. Es funktioniert einfach.“
— Sarah M., Full Stack Engineer

Bereit, deinen SQL-Workflow zu verbessern?

download Kostenlos herunterladen