In SQL, è comune combinare una data e un’ora per generare un’unica data e ora. Questa operazione è utile per registrare timestamp precisi o per cercare in intervalli di date e ore specifici. In questo articolo, esamineremo in dettaglio come combinare data e ora nei principali database SQL (SQL Server, MySQL, PostgreSQL, Oracle, SQLite) e forniremo esempi specifici per ciascun database.
Come combinare data e ora in SQL Server
In SQL Server, puoi combinare una data e un’ora usando le funzioni CAST
e CONVERT
.
Metodo di base
Per iniziare, ecco un esempio di base che utilizza la funzione CAST
.
DECLARE @date DATE = '2024-05-24';
DECLARE @time TIME = '13:45:30';
SELECT CAST(@date AS DATETIME) + CAST(@time AS DATETIME) AS CombinedDateTime;
In questo esempio, la data e l’ora vengono prima convertite in DATETIME
e poi sommate.
Metodo usando la funzione CONVERT
Successivamente, ecco un metodo che utilizza la funzione CONVERT
.
DECLARE @date DATE = '2024-05-24';
DECLARE @time TIME = '13:45:30';
SELECT CONVERT(DATETIME, @date) + CONVERT(DATETIME, @time) AS CombinedDateTime;
Anche in questo esempio, la data e l’ora vengono convertite in DATETIME
e poi sommate.
Metodo usando la funzione FORMAT
Un altro metodo consiste nell’usare la funzione FORMAT
per combinare data e ora in formato stringa.
DECLARE @date DATE = '2024-05-24';
DECLARE @time TIME = '13:45:30';
SELECT CAST(FORMAT(@date, 'yyyy-MM-dd') + ' ' + FORMAT(@time, 'HH:mm:ss') AS DATETIME) AS CombinedDateTime;
In questo caso, la funzione FORMAT
viene utilizzata per convertire la data e l’ora in formato stringa, quindi vengono combinate e convertite in DATETIME
.
Questi sono i principali metodi per combinare data e ora in SQL Server. Scegli il metodo più adatto in base alle tue esigenze.
Come combinare data e ora in MySQL
In MySQL, puoi combinare una data e un’ora usando le funzioni CONCAT
o TIMESTAMP
.
Metodo usando la funzione CONCAT
Per cominciare, ecco un metodo che utilizza la funzione CONCAT
per combinare data e ora in formato stringa, quindi convertirlo in DATETIME
.
SET @date = '2024-05-24';
SET @time = '13:45:30';
SELECT CAST(CONCAT(@date, ' ', @time) AS DATETIME) AS CombinedDateTime;
In questo esempio, la funzione CONCAT
viene utilizzata per combinare la data e l’ora in una stringa, che viene poi convertita in DATETIME
utilizzando la funzione CAST
.
Metodo usando la funzione TIMESTAMP
Successivamente, ecco un metodo che utilizza la funzione TIMESTAMP
. Questa funzione combina la data e l’ora in un valore di tipo TIMESTAMP
.
SET @date = '2024-05-24';
SET @time = '13:45:30';
SELECT TIMESTAMP(@date, @time) AS CombinedDateTime;
Questo metodo utilizza la funzione TIMESTAMP
per combinare facilmente data e ora.
Metodo usando la funzione ADDDATE
Puoi anche usare la funzione ADDDATE
per sommare l’ora a una data.
SET @date = '2024-05-24';
SET @time = '13:45:30';
SELECT ADDDATE(@date, INTERVAL TIME_TO_SEC(@time) SECOND) AS CombinedDateTime;
In questo esempio, la funzione ADDDATE
viene utilizzata insieme a INTERVAL
per aggiungere l’ora alla data in secondi.
Questi sono i principali metodi per combinare data e ora in MySQL. Scegli il metodo più adatto in base alle tue esigenze.
Come combinare data e ora in PostgreSQL
In PostgreSQL, puoi combinare data e ora usando l’operatore ||
o la funzione MAKE_TIMESTAMP
.
Metodo usando concatenazione di stringhe e cast
Per iniziare, ecco un metodo che combina data e ora come stringa e poi le converte in TIMESTAMP
.
SELECT '2024-05-24'::date || ' ' || '13:45:30'::time::text AS combined_datetime;
In questo esempio, l’operatore ||
viene utilizzato per combinare data e ora come stringa, quindi convertito in TIMESTAMP
usando ::timestamp
.
Metodo usando la funzione MAKE_TIMESTAMP
Successivamente, ecco un metodo che utilizza la funzione MAKE_TIMESTAMP
. Questa funzione accetta anno, mese, giorno, ora, minuto e secondo come argomenti e restituisce un valore di tipo TIMESTAMP
.
SELECT MAKE_TIMESTAMP(2024, 5, 24, 13, 45, 30) AS combined_datetime;
In questo caso, ogni parte della data e dell’ora viene specificata separatamente e combinata usando la funzione MAKE_TIMESTAMP
.
Metodo usando INTERVAL
Un altro metodo consiste nell’usare INTERVAL
per sommare l’ora alla data.
SELECT '2024-05-24'::date + '13:45:30'::interval AS combined_datetime;
In questo esempio, l’ora viene convertita in INTERVAL
e quindi aggiunta alla data.
Questi sono i principali metodi per combinare data e ora in PostgreSQL. Scegli il metodo più adatto in base alle tue esigenze.
Come combinare data e ora in Oracle
In Oracle, puoi combinare data e ora usando le funzioni TO_DATE
e TO_TIMESTAMP
.
Metodo usando la funzione TO_DATE
Per cominciare, ecco un metodo che utilizza la funzione TO_DATE
per combinare data e ora. In questo metodo, la data e l’ora vengono combinate come stringa e poi convertite in DATE
.
SELECT TO_DATE('2024-05-24 ' || '13:45:30', 'YYYY-MM-DD HH24:MI:SS') AS CombinedDateTime
FROM dual;
In questo esempio, la funzione TO_DATE
viene utilizzata per combinare data e ora e convertirle nel formato DATE
specificato.
Metodo usando la funzione TO_TIMESTAMP
Successivamente, ecco un metodo che utilizza la funzione TO_TIMESTAMP
. Questa funzione converte una stringa combinata di data e ora in un valore di tipo TIMESTAMP
.
SELECT TO_TIMESTAMP('2024-05-24 ' || '13:45:30', 'YYYY-MM-DD HH24:MI:SS') AS CombinedDateTime
FROM dual;
In questo caso, la funzione TO_TIMESTAMP
viene utilizzata per convertire la stringa combinata in un valore di tipo TIMESTAMP
.
Metodo usando INTERVAL
Puoi anche usare INTERVAL
per sommare l’ora a una data.
SELECT TO_DATE('2024-05-24', 'YYYY-MM-DD') + NUMTODSINTERVAL(TO_CHAR('13:45:30', 'HH24:MI:SS'), 'SECOND') AS CombinedDateTime
FROM dual;
In questo esempio, la funzione TO_DATE
viene utilizzata per convertire la data e la funzione NUMTODSINTERVAL
per convertire l’ora in secondi, che vengono poi sommati alla data.
Questi sono i principali metodi per combinare data e ora in Oracle. Scegli il metodo più adatto in base alle tue esigenze.
Come combinare data e ora in SQLite
In SQLite, puoi combinare data e ora usando la funzione DATETIME
.
Metodo usando la funzione DATETIME
Per iniziare, ecco un metodo che utilizza la funzione DATETIME
per combinare data e ora. Questa funzione combina data e ora come stringa e la converte in un valore di tipo DATETIME
.
SELECT DATETIME('2024-05-24', '13:45:30') AS CombinedDateTime;
In questo caso, la funzione DATETIME
viene utilizzata per combinare data e ora e generare un valore di tipo DATETIME
.
Metodo usando concatenazione di stringhe e cast
Successivamente, ecco un metodo che combina data e ora come stringa e poi le converte in DATETIME
.
SELECT DATETIME('2024-05-24' || ' ' || '13:45:30') AS CombinedDateTime;
In questo caso, l’operatore ||
viene utilizzato per combinare data e ora come stringa, quindi convertito in DATETIME
usando la funzione DATETIME
.
Metodo usando la funzione strftime
Puoi anche usare la funzione strftime
per combinare data e ora.
SELECT strftime('%Y-%m-%d %H:%M:%S', '2024-05-24', '13:45:30') AS CombinedDateTime;
In questo esempio, la funzione strftime
viene utilizzata per specificare il formato e combinare data e ora, generando un valore di tipo DATETIME
.
Questi sono i principali metodi per combinare data e ora in SQLite. Scegli il metodo più adatto in base alle tue esigenze.
Come combinare data e ora in altri database SQL
Anche altri principali database SQL offrono vari metodi per combinare data e ora. Di seguito, riportiamo alcuni dei metodi utilizzati in database rappresentativi.
IBM Db2
In IBM Db2, puoi combinare data e ora usando la funzione TIMESTAMP
.
SELECT TIMESTAMP('2024-05-24', '13:45:30') AS CombinedDateTime
FROM SYSIBM.SYSDUMMY1;
In questo caso, la funzione TIMESTAMP
viene utilizzata per combinare data e ora e generare un valore di tipo TIMESTAMP
.
MariaDB
In MariaDB, come in MySQL, puoi usare le funzioni CONCAT
o TIMESTAMP
.
SET @date = '2024-05-24';
SET @time = '13:45:30';
SELECT TIMESTAMP(@date, @time) AS CombinedDateTime;
In questo caso, viene utilizzata la funzione TIMESTAMP
per combinare data e ora.
Microsoft Access
In Microsoft Access, puoi combinare data e ora usando l’operatore &
o la funzione CDate
.
SELECT CDate('2024-05-24' & ' ' & '13:45:30') AS CombinedDateTime;
In questo esempio, la funzione CDate
viene utilizzata per convertire la stringa combinata di data e ora in un valore di tipo Date/Time
.
Firebird
In Firebird, puoi combinare data e ora usando la funzione CAST
.
SELECT CAST('2024-05-24' || ' ' || '13:45:30' AS TIMESTAMP) AS CombinedDateTime
FROM RDB$DATABASE;
In questo caso, la funzione CAST
viene utilizzata per convertire la stringa combinata di data e ora in un valore di tipo TIMESTAMP
.
Teradata
In Teradata, puoi combinare data e ora usando la funzione CAST
o TIMESTAMP
.
SELECT CAST('2024-05-24 ' || '13:45:30' AS TIMESTAMP) AS CombinedDateTime;
In questo caso, la funzione CAST
viene utilizzata per convertire la stringa combinata di data e ora in un valore di tipo TIMESTAMP
.
Questi sono i principali metodi per combinare data e ora in altri database SQL. Scegli il metodo più adatto in base alle caratteristiche specifiche del tuo database.
Conclusione
In questo articolo, abbiamo esaminato in dettaglio come combinare data e ora nei principali database SQL (SQL Server, MySQL, PostgreSQL, Oracle, SQLite, IBM Db2, MariaDB, Microsoft Access, Firebird, Teradata). Ogni database offre funzioni e operatori unici per combinare data e ora, fornendo una varietà di approcci. Ecco i punti principali:
- SQL Server: utilizza le funzioni
CAST
,CONVERT
eFORMAT
. - MySQL: utilizza le funzioni
CONCAT
,TIMESTAMP
eADDDATE
. - PostgreSQL: utilizza l’operatore
||
,MAKE_TIMESTAMP
eINTERVAL
. - Oracle: utilizza le funzioni
TO_DATE
,TO_TIMESTAMP
eINTERVAL
. - SQLite: utilizza la funzione
DATETIME
, la concatenazione di stringhe e la funzionestrftime
. - Altri database: utilizza funzioni e operatori specifici per ogni database.
Utilizzando questi metodi, sarai in grado di gestire dati temporali in modo preciso in diverse situazioni. Scegli il metodo più adatto alle tue esigenze per ottimizzare le operazioni sul database.