La maggior parte dei principali RDBMS dispone di funzioni che ci consentono di estrarre giorno, mese e anno dai valori datetime.
Alcuni RDBMS forniscono diversi modi per farlo e altri sono più limitati. Di seguito sono riportati esempi di estrazione di giorno, mese e anno dai valori di data in alcuni dei più diffusi RDBMS.
MySQL
MySQL ha diverse funzioni che possono essere utilizzate per estrarre giorno, mese e anno da una data. Uno di questi è EXTRACT()
funzione:
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;
Risultato:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 19 | 12 | 2035 | +------+-------+------+
In questo caso, ho estratto ogni parte della data nel proprio campo.
Se desideri che tutte le parti della data vengano restituite nello stesso campo, DATE_FORMAT()
la funzione può farlo per te.
MySQL ha anche una serie di funzioni che restituiscono parti di data specifiche da una data, come DAY()
, MONTH()
, YEAR()
, ecc.
Vedi Restituire il giorno, il mese e l'anno in MySQL per altri esempi.
Oracolo
Oracle ha un TO_CHAR()
funzione che può essere utilizzata per estrarre parti di data nei propri campi o tutte in un unico campo. Ecco un esempio di restituzione nei singoli campi:
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;
Risultato:
DAY DD MONTH YEAR ____________ _____ ____________ _______ Wednesday 26 September 2035
Consulta questo elenco completo di elementi di formato DateTime in Oracle per un elenco di elementi di formato che possono essere utilizzati per formattare i valori DateTime con questa funzione.
Oracle ha anche un EXTRACT()
funzione che funziona come l'omonima funzione di MySQL.
SQL Server
SQL Server dispone di una gamma piuttosto ampia di funzioni che possono restituire parti di data come giorno, mese e anno.
Il DATEPART()
la funzione è progettata specificamente per restituire parti specifiche di una data:
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;
Risultato:
+-------+-----------+---------+--------+ | DAY | WEEKDAY | MONTH | YEAR | |-------+-----------+---------+--------| | 3 | 2 | 7 | 2045 | +-------+-----------+---------+--------+
Una funzione simile è DATENAME()
, che può restituire i nomi di giorni e mesi come una stringa.
SQL Server dispone anche di funzioni come DAY()
, MONTH()
, YEAR()
, ecc. che restituiscono una parte di data specifica.
E non dimentichiamo il FORMAT()
funzione, che è perfetta se vuoi restituire tutte le parti della data nello stesso campo.
Vedere 6 funzioni per ottenere il giorno, il mese e l'anno da una data in SQL Server per altri esempi.
PostgreSQL
PostgreSQL ha alcune funzioni che possono restituire parti di date dalle date.
Ecco un esempio di DATE_PART()
funzione:
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";
Risultato:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL ha anche un EXTRACT()
funzione che sostanzialmente fa la stessa cosa, tranne che con una sintassi leggermente diversa.
E il TO_CHAR()
la funzione può essere utilizzata se si desidera restituire più parti di data nello stesso campo.
SQLite
SQLite è più limitato quando si tratta di funzioni di data e ora. Tuttavia, puoi ancora utilizzare STRFTIME()
funzione per estrarre giorno, mese e anno da una data:
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Risultato:
01 12 2035
In questo esempio, ho restituito tutte le parti della data nello stesso campo. Ma questo non è necessariamente richiesto. Se vuoi che vengano restituiti in campi diversi, puoi chiamare STRFTIME()
più volte, ognuna con un elemento di formato diverso:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Risultato:
Day Month Year --- ----- ---- 01 12 2035
MariaDB
MariaDB offre un'ampia selezione di funzioni che possono restituire il giorno, il mese e l'anno da un valore datetime.
Ecco un esempio di DATE_FORMAT()
funzione:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Risultato:
+-------------------------------------------+ | DATE_FORMAT('2023-07-25', '%W, %D %M %Y') | +-------------------------------------------+ | Tuesday, 25th July 2023 | +-------------------------------------------+
Questa funzione ci consente di restituire tutte le parti della data in un unico campo (sebbene ciò non sia richiesto:puoi altrettanto facilmente restituire ciascuna parte della data in un campo diverso chiamando DATE_FORMAT()
più volte, ogni volta con una stringa di formato diversa).
E come alcuni degli altri, anche MariaDB ha un EXTRACT()
funzione che estrae una data parte.
E c'è anche una vasta gamma di funzioni specifiche per ogni parte della data, come DAY()
, MONTH()
, YEAR()
, ecc
Consulta 11 funzioni per ottenere il giorno, il mese e l'anno da una data in MariaDB per un riepilogo completo.