MySQL CURDATE() Function
Die Funktion `CURDATE()` in MySQL gibt das aktuelle Datum im Format `JJJJ-MM-TT` zurück. Sie wird häufig verwendet, um das aktuelle Datum in SQL-Abfragen abzurufen und zu vergleichen.
Verwendung
Die Funktion `CURDATE()` wird verwendet, wenn du bei Datenoperationen mit dem aktuellen Datum arbeiten musst, z. B. beim Filtern von Datensätzen oder beim Setzen von Standard-Datumswerten. Sie benötigt keine Argumente und kann in `SELECT`-, `INSERT`-, `UPDATE`- und `WHERE`-Klauseln verwendet werden.
sql
CURDATE();
Diese Syntax gibt das aktuelle Datum als einen Datumswert zurück.
Hinweis: `CURDATE()` und `CURRENT_DATE()` sind Synonyme und können austauschbar verwendet werden.
Beispiele
1. Grundlegende Abfrage des aktuellen Datums
sql
SELECT CURDATE();
In diesem Beispiel wird einfach das aktuelle Datum von der Systemuhr des MySQL-Servers abgefragt.
2. Verwendung von CURDATE() in einer WHERE-Klausel
sql
SELECT order_id, order_date
FROM orders
WHERE order_date = CURDATE();
In diesem Beispiel wird `CURDATE()` verwendet, um Bestellungen zu filtern, die am aktuellen Datum aufgegeben wurden.
3. Aktuelles Datum in eine Tabelle einfügen
sql
INSERT INTO attendance (employee_id, date_checked_in)
VALUES (123, CURDATE());
Hier wird `CURDATE()` verwendet, um automatisch das aktuelle Datum in die Spalte `date_checked_in` einzufügen, wenn ein neuer Datensatz hinzugefügt wird.
4. Komplexe Abfrage mit Datumsarithmetik
sql
SELECT employee_id
FROM attendance
WHERE date_checked_in = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
In diesem Beispiel werden die Datensätze der Mitarbeiter abgerufen, die am Tag vor dem aktuellen Datum eingecheckt haben.
Tipps und bewährte Praktiken
- Achte auf eine einheitliche Zeitzone. Stelle sicher, dass deine Anwendung und der MySQL-Server dieselben Zeitzoneneinstellungen verwenden, um unerwartete Ergebnisse zu vermeiden.
- Verwende `CURDATE()` für reine Datumswerte. Wenn du sowohl Datum als auch Uhrzeit benötigst, solltest du stattdessen `NOW()` verwenden.
- Kombiniere mit Datumsfunktionen. Verwende `CURDATE()` neben anderen Datumsfunktionen wie `DATE_ADD()` für komplexere Datumsberechnungen.
- Sei dir des impliziten Castings bewusst. Beim Vergleich von `CURDATE()` mit datetime-Spalten kann es zu implizitem Casting kommen, was die Leistung beeinträchtigen kann. Zur Optimierung kannst du die datetime-Spalte explizit mit `CAST(datetime_column AS DATE)` in ein Datum umwandeln.