Beim Ausführen von Abfragen in MySQL können Sie DAYOFYEAR()
verwenden Funktion, um den Tag des Jahres aus einem Datum zurückzugeben.
Diese Funktion akzeptiert ein Argument und gibt einen Wert zwischen 1 zurück und 366 , abhängig davon, für welchen Tag des Jahres der Tagesteil des Arguments steht.
Syntax
Die Syntax lautet wie folgt:
DAYOFYEAR(date)
Wobei date
ist der Datumswert, von dem Sie den Tag des Jahres zurückgeben möchten.
Beispiel
Hier ist ein Beispiel zur Veranschaulichung.
SELECT DAYOFYEAR('2019-01-01') AS 'Date 1', DAYOFYEAR('2019-12-31') AS 'Date 2';
Ergebnis:
+--------+--------+ | Date 1 | Date 2 | +--------+--------+ | 1 | 365 | +--------+--------+
Um die richtige Wirkung zu demonstrieren, führe ich in diesem Beispiel diese Funktion zweimal an zwei verschiedenen Daten aus – eines am Anfang des Jahres und das andere am Ende des Jahres.
DAYOFYEAR() vs. DAYOFMONTH()
Hier ist ein Beispiel, um den Unterschied zwischen DAYOFYEAR()
zu demonstrieren und DAYOFMONTH()
Funktionen.
SET @date = '2019-10-03'; SELECT @date, DAYOFMONTH(@date) AS 'Day of Month', DAYOFYEAR(@date) AS 'Day of Year';
Ergebnis:
+------------+--------------+-------------+ | @date | Day of Month | Day of Year | +------------+--------------+-------------+ | 2019-10-03 | 3 | 276 | +------------+--------------+-------------+
Der DAYOFMONTH()
Funktion gibt einen Wert zwischen 1 zurück und 31 (oder 0 für Datumsangaben mit einem Null-Tagesteil), der den Tag des Monats darstellt. Es wird auf 1 zurückgesetzt zu Beginn eines jeden Monats.
Das DAYOFYEAR()
Funktion hingegen gibt einen Wert zwischen 1 zurück und 366 . Es wird auf 1 zurückgesetzt zu Beginn eines jeden Jahres.
Ein Datenbankbeispiel
Hier ist ein Beispiel für die Verwendung von DAYOFYEAR()
beim Abfragen einer Datenbank:
USE sakila; SELECT payment_date AS 'Date/Time', DAYOFYEAR(payment_date) AS 'Day of Year' FROM payment WHERE payment_id = 1;
Ergebnis:
+---------------------+-------------+ | Date/Time | Day of Year | +---------------------+-------------+ | 2005-05-25 11:30:37 | 145 | +---------------------+-------------+
Aktuelles Datum/aktuelle Uhrzeit
Hier ist ein Beispiel für das Extrahieren des Tagesteils aus dem aktuellen Datum und der aktuellen Uhrzeit (die mit NOW()
zurückgegeben werden Funktion).
SELECT NOW(), DAYOFYEAR(NOW());
Ergebnis:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2018-06-26 08:23:04 | 177 | +---------------------+------------------+
Eine andere Möglichkeit, dies zu tun, ist die Verwendung von CURDATE()
Funktion, die nur das Datum (aber nicht die Uhrzeit) zurückgibt.
SELECT CURDATE(), DAYOFYEAR(CURDATE());
Ergebnis:
+------------+----------------------+ | CURDATE() | DAYOFYEAR(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 177 | +------------+----------------------+