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

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

Questo articolo contiene esempi di conversione di un smalldatetime valore a una data valore in SQL Server.

Uno dei vantaggi della conversione di un smalldatetime valore a data è che riduci la dimensione di archiviazione da 4 byte a 3 byte. Tuttavia, perdi la componente temporale dal valore, quindi faresti questa conversione solo se non ti serve il tempo.

Il smalldatetime tipo di dati sia la data che l'ora. La sua componente dei secondi è sempre impostata su zero (:00) e non ha secondi frazionari. La sua precisione è al minuto più vicino. La sua dimensione di archiviazione è di 4 byte.

La data il tipo di dati, invece, include solo la data. La sua precisione è al giorno più vicino. La sua dimensione di archiviazione è di 3 byte.

Quindi, per essere chiari, quando converti un smalldatetime valore a data , vengono copiati l'anno, il mese e il giorno. L'ora non viene copiata.

Esempio 1 – Conversione implicita

Ecco un esempio di conversione implicita tra smalldatetime e data .

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedate date;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedate = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedate AS 'thedate';

Risultato:

+---------------------+------------+
| smalldatetime       | thedate    |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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 smalldatetime valore a una data variabile.

In questo esempio possiamo vedere che la parte della data di smalldatetime il valore viene copiato nella data valore e che l'ora non viene copiata.

Esempio 2 – Conversione esplicita mediante CAST()

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

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS date) AS 'date';

Risultato:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+

Esempio 3 – Conversione esplicita mediante CONVERT()

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

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(date, @thesmalldatetime) AS 'date';

Risultato:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+