Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Converti "datetime" in "date" in SQL Server (esempi T-SQL)

Questo articolo contiene esempi di conversione di una data/ora valore a una data valore in SQL Server.

L'ovvia conseguenza della conversione di un datetime valore a data è che perdi la parte del tempo. Tuttavia, un vantaggio è che si riduce la dimensione di archiviazione da 8 byte a 3 byte. Ad ogni modo, faresti questa conversione solo se non hai bisogno della parte del tempo.

La data e ora il tipo di dati include la data e l'ora, con una parte di secondi frazionari di 3 cifre. La sua precisione è arrotondata a incrementi di .000, .003 o .007 secondi.

Tuttavia, la data il tipo di dati ha una precisione di 1 giorno (e non include l'ora, come detto).

Esempio 1 – Conversione implicita

Ecco un esempio di conversione implicita tra datetime e data .

DECLARE 
  @thedatetime datetime, 
  @thedate date;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thedate = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thedate AS 'date';

Risultato:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Questa è una conversione implicita perché non stiamo usando una funzione di conversione (come quelle sotto) per convertirla in modo esplicito. In questo caso, SQL Server esegue una conversione implicita dietro le quinte quando proviamo ad assegnare il datetime valore a una data variabile.

In questo esempio possiamo vedere che la data il valore include solo la data (senza il componente ora).

Esempio 2 – Conversione esplicita mediante CAST()

Ecco un esempio di conversione esplicita. In questo caso, utilizzo il CAST() funzione direttamente all'interno di SELECT dichiarazione da convertire in modo esplicito tra datetime e data .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS date) AS 'date';

Risultato:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Esempio 3 – Conversione esplicita mediante CONVERT()

Ecco un esempio di una conversione esplicita utilizzando CONVERT() funzione invece di CAST() .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(date, @thedatetime) AS 'date';

Risultato:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+