Come combinare data e ora in SQL: esempi pratici e guida completa

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.

Indice

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 e FORMAT.
  • MySQL: utilizza le funzioni CONCAT, TIMESTAMP e ADDDATE.
  • PostgreSQL: utilizza l’operatore ||, MAKE_TIMESTAMP e INTERVAL.
  • Oracle: utilizza le funzioni TO_DATE, TO_TIMESTAMP e INTERVAL.
  • SQLite: utilizza la funzione DATETIME, la concatenazione di stringhe e la funzione strftime.
  • 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.

Indice