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()
.