De fleste af de store RDBMS'er har funktioner, der gør det muligt for os at udtrække dag, måned og år fra datetime-værdier.
Nogle RDBMS'er giver flere måder at gøre dette på, og andre er mere begrænsede. Nedenfor er eksempler på udtrækning af dag, måned og år fra datoværdier i nogle af de mest populære RDBMS'er.
MySQL
MySQL har flere funktioner, der kan bruges til at udtrække dag, måned og år fra en dato. En af disse er 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:
+------+-------+------+| Dag | Måned | År |+------+-------+------+| 19 | 12 | 2035 |+------+-------+------+
I dette tilfælde udtrak jeg hver datodel til sit eget felt.
Hvis du ønsker, at alle datodele skal returneres i det samme felt, skal DATE_FORMAT()
funktion kan gøre dette for dig.
MySQL har også en masse funktioner, der returnerer specifikke datodele fra en dato, såsom DAY()
, MONTH()
, YEAR()
osv.
Se Returner dag, måned og år i MySQL for flere eksempler.
Oracle
Oracle har en TO_CHAR()
funktion, der kan bruges til at udtrække datodele i deres egne felter, eller alle i et enkelt felt. Her er et eksempel på returnering af dem i individuelle felter:
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:
DAG DD MÅNED ÅR ____________ _____ ____________ _______ Onsdag den 26. september 2035
Se denne fulde liste over Datetime Format Elements i Oracle for en liste over formatelementer, der kan bruges til at formatere datetime-værdier med denne funktion.
Oracle har også en EXTRACT()
funktion, der fungerer som MySQL's funktion af samme navn.
SQL-server
SQL Server har et ret stort udvalg af funktioner, der kan returnere datodele som dag, måned og år.
DATEPART()
funktion er designet specifikt til at returnere specificerede dele af en dato:
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:
+-------+-----------+--------+--------+| DAG | UGEDAG | MÅNED | ÅR ||-------+-----------+---------+--------|| 3 | 2 | 7 | 2045 |+-------+-----------+--------+--------+
En lignende funktion er DATENAME()
, som kan returnere dag- og månedsnavne som en streng.
SQL Server har også funktioner såsom DAY()
, MONTH()
, YEAR()
osv., der returnerer en bestemt datodel.
Og lad os ikke glemme FORMAT()
funktion, som er perfekt, hvis du ønsker at returnere alle datodele i samme felt.
Se 6 funktioner til at få dagen, måneden og året fra en dato i SQL Server for flere eksempler.
PostgreSQL
PostgreSQL har nogle få funktioner, der kan returnere datodele fra datoer.
Her er et eksempel 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:
PostgreSQL har også en EXTRACT()
funktion, der grundlæggende gør det samme, undtagen med en lidt anden syntaks.
Og TO_CHAR()
funktion kan bruges, hvis du ønsker at returnere flere datodele i samme felt.
SQLite
SQLite er mere begrænset, når det kommer til dato- og tidsfunktioner. Du kan dog stadig bruge STRFTIME()
funktion til at udtrække dag, måned og år fra en dato:
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Resultat:
01 12 2035
I dette eksempel har jeg returneret alle datodele i det samme felt. Men dette er ikke nødvendigvis påkrævet. Hvis du vil have dem returneret i forskellige felter, kan du kalde STRFTIME()
flere gange, hver med et forskelligt formatelement:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Resultat:
Dag Måned År--- ----- ----01 12 2035
MariaDB
MariaDB tilbyder et stort udvalg af funktioner, der kan returnere dagen, måneden og året fra en dato og klokkeslæt.
Her er et eksempel på DATE_FORMAT()
funktion:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Resultat:
+----------------------------------------------+| DATE_FORMAT('2023-07-25', '%W, %D %M %Y') |+-------------------------------- ------------------+| Tirsdag den 25. juli 2023 |+------------------------------------------------ +
Denne funktion giver os mulighed for at returnere alle datodele i et enkelt felt (selvom dette ikke er påkrævet – du kan lige så nemt returnere hver datodel i et andet felt ved at kalde DATE_FORMAT()
flere gange, hver gang med en anden formatstreng).
Og ligesom nogle af de andre har MariaDB også en EXTRACT()
funktion, der udtrækker en given datodel.
Og der er også et stort udvalg af specifikke funktioner for hver datodel, såsom DAY()
, MONTH()
, YEAR()
osv.
Se 11 funktioner til at få dagen, måneden og året fra en dato i MariaDB for at få en fuldstændig oversigt.