sql >> Databasteknik >  >> RDS >> MariaDB

3 sätt att skilja år, månad och dag från ett datum i MariaDB

MariaDB har flera funktioner som gör att du kan extrahera olika datum- och tidsdelar från datum/tidsvärden. Du kan använda dessa för att separera varje datum/tid-komponent i en egen kolumn om det behövs.

Nedan finns tre sätt att extrahera år, månad och dag från ett datumvärde i MariaDB.

YEAR() , MONTH() och DAY() Funktioner

YEAR() , MONTH() och DAY() funktioner extraherar år, månad och dag från ett datum respektive datetime-värde.

Här är ett exempel på hur du använder dessa funktioner för att returnera varje datumkomponent i sin egen kolumn:

SELECT 
    YEAR('2025-08-30') AS "Year",
    MONTH('2025-08-30') AS "Month",
    DAY('2025-08-30') AS "Day";

Resultat:

+------+-------+------+
| Year | Month | Day  |
+------+-------+------+
| 2025 |     8 |   30 |
+------+-------+------+

DAY() funktion är faktiskt en synonym för DAYOFMONTH() , så endera kommer att returnera samma resultat.

Det finns också en WEEKDAY() funktion, en DAYOFWEEK() funktion, en DAYOFYEAR() funktion och en DAYNAME() funktion, som var och en returnerar en annan representation av dagen.

Dessutom finns det en MONTHNAME() funktion som returnerar månadens namn, istället för dess nummer.

Här är ett annat exempel som inkluderar dessa funktioner:

SELECT 
    YEAR('2025-08-30') AS "YEAR",
    MONTH('2025-08-30') AS "MONTH",
    MONTHNAME('2025-08-30') AS "MONTHNAME",
    DAY('2025-08-30') AS "DAY",
    DAYOFMONTH('2025-08-30') AS "DAYOFMONTH",
    WEEKDAY('2025-08-30') AS "WEEKDAY",
    DAYOFWEEK('2025-08-30') AS "DAYOFWEEK",
    DAYOFYEAR('2025-08-30') AS "DAYOFYEAR",
    DAYNAME('2025-08-30') AS "DAYNAME";

Resultat (med vertikal utdata):

      YEAR: 2025
     MONTH: 8
 MONTHNAME: August
       DAY: 30
DAYOFMONTH: 30
   WEEKDAY: 5
 DAYOFWEEK: 7
 DAYOFYEAR: 242
   DAYNAME: Saturday

Du kan också använda funktioner som WEEK() för att returnera veckonummer och QUARTER() för att lämna tillbaka kvartalet.

Exempel:

SELECT 
    WEEK('2025-08-30') AS "Week",
    QUARTER('2025-08-30') AS "Quarter";

Resultat:

+------+---------+
| Week | Quarter |
+------+---------+
|   34 |       3 |
+------+---------+

WEEK() funktion accepterar ett andra argument som låter dig ange läget. Detta kan ändra det resulterande veckonumret, beroende på det faktiska datumet. Se hur WEEK() Fungerar i MariaDB för mer information och ett exempel.

EXTRACT() Funktion

EXTRACT() funktionen låter dig extrahera en specificerad enhet från datum/tidsvärdet. Därför kan du använda den för att extrahera år, månad och dag från datumet (samt vecka och kvartal om det behövs).

Exempel:

SELECT 
    EXTRACT(YEAR FROM '2023-03-12') AS "Year",
    EXTRACT(MONTH FROM '2023-03-12') AS "Month",
    EXTRACT(DAY FROM '2023-03-12') AS "Day",
    EXTRACT(WEEK FROM '2023-03-12') AS "Week",
    EXTRACT(QUARTER FROM '2023-03-12') AS "Quarter";

Resultat:

+------+-------+------+------+---------+
| Year | Month | Day  | Week | Quarter |
+------+-------+------+------+---------+
| 2023 |     3 |   12 |   11 |       1 |
+------+-------+------+------+---------+

DATE_FORMAT() Funktion

DATE_FORMAT() funktionen låter dig formatera ett datum- eller datumtidsvärde baserat på en formatsträng. Formatsträngen anger hur datum/tid ska formateras.

Vi kan därför använda denna funktion för att returnera år, månad, dag och vecka från ett datum.

Exempel:

SELECT 
    DATE_FORMAT('2035-12-08', '%Y') AS "Year",
    DATE_FORMAT('2035-12-08', '%m') AS "Month",
    DATE_FORMAT('2035-12-08', '%d') AS "Day",
    DATE_FORMAT('2035-12-08', '%U') AS "Week";

Resultat:

+------+-------+------+------+
| Year | Month | Day  | Week |
+------+-------+------+------+
| 2035 | 12    | 08   | 48   |
+------+-------+------+------+

Det finns flera möjliga formatspecifikationer för varje datumdel. Varje datumdel kan returnera ett annat värde, beroende på den faktiska formatspecifikationen som tillhandahålls. Du kan till exempel returnera hela månadens namn med %M istället för %m .

Se MariaDB Format Strings för en fullständig lista över formatsträngar/specifikationer som kan användas med DATE_FORMAT() .


  1. Orsakas av:android.database.sqlite.SQLiteException:ingen sådan tabell:BOOK (kod 1 SQLITE_ERROR)

  2. Använd MySQL relationsdatabaser på Fedora 13

  3. Beteende av NOT LIKE med NULL-värden

  4. Hur rensar man ODP.NET-anslutningspoolen vid anslutningsfel?