De flesta av de stora RDBMS:erna har funktioner som gör att vi kan extrahera dag, månad och år från datetime-värden.
Vissa RDBMS tillhandahåller flera sätt att göra detta, och andra är mer begränsade. Nedan finns exempel på att extrahera dag, månad och år från datumvärden i några av de mest populära RDBMS:erna.
MySQL
MySQL har flera funktioner som kan användas för att extrahera dag, månad och år från ett datum. En av dessa är 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;
Resultat:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 19 | 12 | 2035 | +------+-------+------+
I det här fallet extraherade jag varje datumdel till sitt eget fält.
Om du vill att alla datumdelar ska returneras i samma fält, DATE_FORMAT()
funktion kan göra detta åt dig.
MySQL har också ett gäng funktioner som returnerar specifika datumdelar från ett datum, till exempel DAY()
, MONTH()
, YEAR()
, etc.
Se Returnera dagen, månaden och året i MySQL för fler exempel.
Oracle
Oracle har en TO_CHAR()
funktion som kan användas för att extrahera datumdelar i sina egna fält, eller alla i ett enda fält. Här är ett exempel på hur du returnerar dem i enskilda fält:
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;
Resultat:
DAY DD MONTH YEAR ____________ _____ ____________ _______ Wednesday 26 September 2035
Se den här fullständiga listan över Datetime Format Elements i Oracle för en lista över formatelement som kan användas för att formatera datetime-värden med den här funktionen.
Oracle har också en EXTRACT()
funktion som fungerar som MySQL:s funktion med samma namn.
SQL-server
SQL Server har ett ganska stort utbud av funktioner som kan returnera datumdelar som dag, månad och år.
DATEPART()
funktion är utformad specifikt för att returnera specificerade delar av ett datum:
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;
Resultat:
+-------+-----------+---------+--------+ | DAY | WEEKDAY | MONTH | YEAR | |-------+-----------+---------+--------| | 3 | 2 | 7 | 2045 | +-------+-----------+---------+--------+
En liknande funktion är DATENAME()
, som kan returnera dag- och månadsnamn som en sträng.
SQL Server har också funktioner som DAY()
, MONTH()
, YEAR()
, etc som returnerar en specifik datumdel.
Och låt oss inte glömma FORMAT()
funktion, vilket är perfekt om du vill returnera alla datumdelar i samma fält.
Se 6 funktioner för att hämta dag, månad och år från ett datum i SQL Server för fler exempel.
PostgreSQL
PostgreSQL har några funktioner som kan returnera datumdelar från datum.
Här är ett exempel på 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";
Resultat:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL har också en EXTRACT()
funktion som i princip gör samma sak, förutom med en lite annorlunda syntax.
Och TO_CHAR()
funktionen kan användas om du vill returnera flera datumdelar i samma fält.
SQLite
SQLite är mer begränsad när det gäller datum- och tidsfunktioner. Du kan dock fortfarande använda STRFTIME()
funktion för att extrahera dagen, månaden och året från ett datum:
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Resultat:
01 12 2035
I det här exemplet har jag returnerat alla datumdelar i samma fält. Men detta är inte nödvändigtvis nödvändigt. Om du vill att de ska returneras i olika fält kan du anropa STRFTIME()
flera gånger, var och en med olika formatelement:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Resultat:
Day Month Year --- ----- ---- 01 12 2035
MariaDB
MariaDB tillhandahåller ett stort urval av funktioner som kan returnera dagen, månaden och året från ett datum och tid.
Här är ett exempel på DATE_FORMAT()
funktion:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Resultat:
+-------------------------------------------+ | DATE_FORMAT('2023-07-25', '%W, %D %M %Y') | +-------------------------------------------+ | Tuesday, 25th July 2023 | +-------------------------------------------+
Den funktionen låter oss returnera alla datumdelar i ett enda fält (även om detta inte krävs – du kan lika gärna returnera varje datumdel i ett annat fält genom att anropa DATE_FORMAT()
flera gånger, varje gång med en annan formatsträng).
Och precis som några av de andra har MariaDB också en EXTRACT()
funktion som extraherar en given datumdel.
Och det finns också ett stort utbud av specifika funktioner för varje datumdel, som DAY()
, MONTH()
, YEAR()
osv
Se 11 funktioner för att få dagen, månaden och året från ett datum i MariaDB för en fullständig översikt.