De meeste grote RDBMS'en hebben functies waarmee we de dag, de maand en het jaar kunnen extraheren uit datetime-waarden.
Sommige RDBMS'en bieden meerdere manieren om dit te doen, en andere zijn beperkter. Hieronder staan voorbeelden van het extraheren van dag, maand en jaar uit datumwaarden in enkele van de meest populaire RDBMS'en.
MySQL
MySQL heeft verschillende functies die kunnen worden gebruikt om de dag, de maand en het jaar uit een datum te extraheren. Een daarvan is de EXTRACT()
functie:
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;
Resultaat:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 19 | 12 | 2035 | +------+-------+------+
In dit geval heb ik elk datumgedeelte naar zijn eigen veld geëxtraheerd.
Als u wilt dat alle datumdelen in hetzelfde veld worden geretourneerd, moet de DATE_FORMAT()
functie kan dit voor u doen.
MySQL heeft ook een aantal functies die specifieke datumdelen van een datum retourneren, zoals DAY()
, MONTH()
, YEAR()
, enz.
Zie Dag, maand en jaar retourneren in MySQL voor meer voorbeelden.
Oracle
Oracle heeft een TO_CHAR()
functie die kan worden gebruikt om datumdelen in hun eigen velden of allemaal in een enkel veld te extraheren. Hier is een voorbeeld van het retourneren in afzonderlijke velden:
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;
Resultaat:
DAY DD MONTH YEAR ____________ _____ ____________ _______ Wednesday 26 September 2035
Bekijk deze volledige lijst met datum/tijd-indelingselementen in Oracle voor een lijst met opmaakelementen die kunnen worden gebruikt om datum/tijd-waarden op te maken met deze functie.
Oracle heeft ook een EXTRACT()
functie die werkt als de gelijknamige functie van MySQL.
SQL-server
SQL Server heeft een behoorlijk groot aantal functies die datumdelen zoals dag, maand en jaar kunnen retourneren.
De DATEPART()
functie is speciaal ontworpen voor het retourneren van gespecificeerde delen van een 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;
Resultaat:
+-------+-----------+---------+--------+ | DAY | WEEKDAY | MONTH | YEAR | |-------+-----------+---------+--------| | 3 | 2 | 7 | 2045 | +-------+-----------+---------+--------+
Een vergelijkbare functie is DATENAME()
, die dag- en maandnamen als een tekenreeks kan retourneren.
SQL Server heeft ook functies zoals DAY()
, MONTH()
, YEAR()
, enz. die een specifiek datumgedeelte retourneren.
En laten we de FORMAT()
. niet vergeten functie, wat perfect is als je alle datumdelen in hetzelfde veld wilt retourneren.
Zie 6 functies om de dag, maand en jaar van een datum in SQL Server te krijgen voor meer voorbeelden.
PostgreSQL
PostgreSQL heeft een paar functies die datumdelen van datums kunnen retourneren.
Hier is een voorbeeld van de DATE_PART()
functie:
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";
Resultaat:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL heeft ook een EXTRACT()
functie die in principe hetzelfde doet, behalve met een iets andere syntaxis.
En de TO_CHAR()
functie kan worden gebruikt als u meerdere datumdelen in hetzelfde veld wilt retourneren.
SQLite
SQLite is beperkter als het gaat om datum- en tijdfuncties. U kunt echter nog steeds de STRFTIME()
. gebruiken functie om de dag, maand en jaar uit een datum te halen:
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Resultaat:
01 12 2035
In dit voorbeeld heb ik alle datumdelen in hetzelfde veld geretourneerd. Maar dit is niet per se vereist. Als u ze in verschillende velden wilt retourneren, kunt u STRFTIME()
. aanroepen meerdere keren, elk met een ander formaatelement:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Resultaat:
Day Month Year --- ----- ---- 01 12 2035
MariaDB
MariaDB biedt een grote selectie van functies die de dag, maand en jaar kunnen retourneren vanuit een datetime-waarde.
Hier is een voorbeeld van de DATE_FORMAT()
functie:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Resultaat:
+-------------------------------------------+ | DATE_FORMAT('2023-07-25', '%W, %D %M %Y') | +-------------------------------------------+ | Tuesday, 25th July 2023 | +-------------------------------------------+
Met die functie kunnen we alle datumdelen in een enkel veld retourneren (hoewel dit niet verplicht is - je kunt net zo gemakkelijk elk datumdeel in een ander veld retourneren door DATE_FORMAT()
aan te roepen meerdere keren, elke keer met een andere opmaakreeks).
En net als sommige anderen heeft MariaDB ook een EXTRACT()
functie die een bepaald datumgedeelte extraheert.
En er is ook een groot aantal specifieke functies voor elk datumgedeelte, zoals DAY()
, MONTH()
, YEAR()
, enz.
Zie 11 functies om de dag, maand en jaar van een datum in MariaDB te krijgen voor een volledig overzicht.