MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So erhalten Sie Tag, Monat und Jahr aus einem Datum in SQL

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.