Die meisten großen RDBMSs haben Funktionen, die es uns ermöglichen, Tag, Monat und Jahr aus datetime-Werten zu extrahieren.
Einige RDBMS bieten dafür mehrere Möglichkeiten, andere sind eingeschränkter. Nachfolgend finden Sie Beispiele für das Extrahieren von Tag, Monat und Jahr aus Datumswerten in einigen der beliebtesten RDBMSs.
MySQL
MySQL verfügt über mehrere Funktionen, mit denen Tag, Monat und Jahr aus einem Datum extrahiert werden können. Einer davon ist EXTRACT()
Funktion:
SELECT
EXTRACT(DAY FROM '2035-12-19') AS Day,
EXTRACT(MONTH FROM '2035-12-19') AS Month,
EXTRACT(YEAR FROM '2035-12-19') AS Year;
Ergebnis:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 19 | 12 | 2035 | +------+-------+------+
In diesem Fall habe ich jeden Datumsteil in ein eigenes Feld extrahiert.
Wenn Sie möchten, dass alle Datumsteile im selben Feld zurückgegeben werden, ist das DATE_FORMAT()
Funktion kann dies für Sie erledigen.
MySQL hat auch eine Reihe von Funktionen, die bestimmte Datumsteile eines Datums zurückgeben, wie zum Beispiel DAY()
, MONTH()
, YEAR()
usw.
Weitere Beispiele finden Sie unter Tag, Monat und Jahr in MySQL zurückgeben.
Orakel
Oracle hat ein TO_CHAR()
Funktion, die verwendet werden kann, um Datumsteile in ihren eigenen Feldern oder alle in einem einzigen Feld zu extrahieren. Hier ist ein Beispiel für die Rückgabe in einzelnen Feldern:
SELECT
TO_CHAR(DATE '2035-09-26', 'Day') AS Day,
TO_CHAR(DATE '2035-09-26', 'DD') AS DD,
TO_CHAR(DATE '2035-09-26', 'Month') AS Month,
TO_CHAR(DATE '2035-09-26', 'YYYY') AS Year
FROM DUAL;
Ergebnis:
DAY DD MONTH YEAR ____________ _____ ____________ _______ Wednesday 26 September 2035
In dieser vollständigen Liste der Datetime-Formatelemente in Oracle finden Sie eine Liste der Formatelemente, die zum Formatieren von Datetime-Werten mit dieser Funktion verwendet werden können.
Oracle hat auch ein EXTRACT()
Funktion, die wie die gleichnamige Funktion von MySQL funktioniert.
SQL-Server
SQL Server hat eine ziemlich große Auswahl an Funktionen, die Datumsteile wie Tag, Monat und Jahr zurückgeben können.
Der DATEPART()
Die Funktion wurde speziell für die Rückgabe bestimmter Teile eines Datums entwickelt:
DECLARE @date date = '2045-07-03';
SELECT
DATEPART(day, @date) AS DAY,
DATEPART(weekday, @date) AS WEEKDAY,
DATEPART(month, @date) AS MONTH,
DATEPART(year, @date) AS YEAR;
Ergebnis:
+-------+-----------+---------+--------+ | DAY | WEEKDAY | MONTH | YEAR | |-------+-----------+---------+--------| | 3 | 2 | 7 | 2045 | +-------+-----------+---------+--------+
Eine ähnliche Funktion ist DATENAME()
, die Tages- und Monatsnamen als Zeichenfolge zurückgeben kann.
SQL Server hat auch Funktionen wie DAY()
, MONTH()
, YEAR()
, etc, die einen bestimmten Datumsteil zurückgeben.
Und vergessen wir nicht das FORMAT()
Funktion, die perfekt ist, wenn Sie alle Datumsteile im selben Feld zurückgeben möchten.
Weitere Beispiele finden Sie unter 6 Funktionen zum Abrufen von Tag, Monat und Jahr aus einem Datum in SQL Server.
PostgreSQL
PostgreSQL hat einige Funktionen, die Datumsteile aus Datumsangaben zurückgeben können.
Hier ist ein Beispiel für DATE_PART()
Funktion:
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year";
Ergebnis:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL hat auch ein EXTRACT()
Funktion, die im Grunde dasselbe macht, außer mit einer etwas anderen Syntax.
Und das TO_CHAR()
Funktion kann verwendet werden, wenn Sie mehrere Datumsteile im selben Feld zurückgeben möchten.
SQLite
SQLite ist eingeschränkter, wenn es um Datums- und Zeitfunktionen geht. Sie können jedoch immer noch STRFTIME()
verwenden Funktion um Tag, Monat und Jahr aus einem Datum zu extrahieren:
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Ergebnis:
01 12 2035
In diesem Beispiel habe ich alle Datumsteile im selben Feld zurückgegeben. Dies ist aber nicht unbedingt erforderlich. Wenn Sie möchten, dass sie in anderen Feldern zurückgegeben werden, können Sie STRFTIME()
aufrufen mehrfach, jeweils mit einem anderen Formatelement:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Ergebnis:
Day Month Year --- ----- ---- 01 12 2035
MariaDB
MariaDB bietet eine große Auswahl an Funktionen, die Tag, Monat und Jahr aus einem datetime-Wert zurückgeben können.
Hier ist ein Beispiel für DATE_FORMAT()
Funktion:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Ergebnis:
+-------------------------------------------+ | DATE_FORMAT('2023-07-25', '%W, %D %M %Y') | +-------------------------------------------+ | Tuesday, 25th July 2023 | +-------------------------------------------+
Diese Funktion ermöglicht es uns, alle Datumsteile in einem einzigen Feld zurückzugeben (obwohl dies nicht erforderlich ist – Sie könnten genauso einfach jeden Datumsteil in einem anderen Feld zurückgeben, indem Sie DATE_FORMAT()
aufrufen mehrmals, jedes Mal mit einem anderen Formatstring).
Und wie einige der anderen hat auch MariaDB ein EXTRACT()
Funktion, die einen bestimmten Datumsteil extrahiert.
Und es gibt auch eine große Auswahl an spezifischen Funktionen für jeden Datumsteil, wie zum Beispiel DAY()
, MONTH()
, YEAR()
, usw.
Siehe 11 Funktionen zum Abrufen von Tag, Monat und Jahr aus einem Datum in MariaDB für einen vollständigen Überblick.