In SQL Server puoi utilizzare CONVERT()
funzione per convertire un'espressione di un tipo di dati in un altro. Pertanto, se hai bisogno di convertire una stringa in un formato data/ora, questa funzione può aiutarti.
Questo articolo contiene esempi per dimostrarne l'utilizzo.
Sintassi
La sintassi è questa:
CONVERT ( tipo_dati [ ( lunghezza ) ] , espressione [ , stile ] )
Questi argomenti sono definiti come segue:
expression
- Qualsiasi espressione valida.
data_type
- Il tipo di dati di destinazione. Ciò include xml , grande e sql_variant . Non è possibile utilizzare tipi di dati alias.
length
- Un numero intero facoltativo che specifica la lunghezza del tipo di dati di destinazione. Il valore predefinito è
30
. style
- Un'espressione intera che specifica come
CONVERT()
la funzione tradurrà espressione . Per un valore di stile di NULL, viene restituito NULL. tipo_dati determina l'intervallo.
Esempio 1 – Converti in data Tipo di dati
In questo esempio, convertiamo la stringa in una data tipo di dati (lo specifichiamo usando date
come primo argomento).
SELECT CONVERT(date, '20 Dec 2018') AS Risultato;
Risultato:
+------------+| Risultato ||------------|| 20-12-2018 |+------------+
Ovviamente, la stringa deve essere in uno stile che possa essere convertito nel tipo di dati specificato, altrimenti riceverai un errore:
SELECT CONVERT(date, 'Homer') AS Risultato;
Risultato:
Conversione non riuscita durante la conversione di data e/o ora dalla stringa di caratteri.
Esempio 2:conversione in tipo di dati datetime
In questo esempio convertiamo in datetime tipo di dati:
SELECT CONVERT(datetime, '20 Dec 2018') AS Result;
Risultato:
+-------------------------+| Risultato ||------------|| 20-12-2018 00:00:00.000 |+--------------------------+
Puoi anche specificare l'ora:
SELECT CONVERT(datetime, '14:00 20 dicembre 2018') AS Risultato;
Risultato:
+-------------------------+| Risultato ||------------|| 2018-12-20 14:00:00.000 |+--------------------------+
Esempio 3:conversione in tipo di dati datetime2
In questo esempio convertiamo in datetime2 tipo di dati:
SELECT CONVERT(datetime2, '20 Dec 2018') AS Result;
Risultato:
+-----------------------------+| Risultato ||---------------||| 20-12-2018 00:00:00.0000000 |+-----------------------------+
Esempio 4:conversione in tipo di dati datetimeoffset
In questo esempio convertiamo in datetimeoffset tipo di dati:
SELECT CONVERT(datetimeoffset, '20 dic 2018') AS Risultato;
Risultato:
+------------------------------------+| Risultato ||--------------------------------------|| 20-12-2018 00:00:00.0000000 +00:00 |+------------------------------------------------ ---
Esempio 5:conversione in tipo di dati smalldatetime
In questo esempio convertiamo in smalldatetime tipo di dati:
SELECT CONVERT(smalldatetime, '20 Dec 2018') AS Result;
Risultato:
+---------------------+| Risultato ||----------------------|| 20-12-2018 00:00:00 |+----------------------+
Esempio 6:conversione in tipo di dati temporali
In questo esempio convertiamo il tempo tipo di dati:
SELECT CONVERT(time, '20 Dec 2018') AS Risultato;
Risultato:
+----------+| Risultato ||----------|| 00:00:00 |+----------+
In tal caso, abbiamo specificato una data ma non un'ora, quindi è tornato come 00:00:00
. Ecco un altro esempio in cui specifichiamo effettivamente un'ora:
SELECT CONVERT(time, '2pm') AS Risultato;
Risultato:
+----------+| Risultato ||----------|| 14:00:00 |+----------+
Ma se aggiungiamo la data, otteniamo un errore (a differenza di un esempio precedente quando abbiamo convertito in datetime ):
SELECT CONVERT(time, '14:00 20 dicembre 2018') AS Risultato;
Risultato:
Conversione non riuscita durante la conversione di data e/o ora dalla stringa di caratteri.
Quindi in questo caso dovresti convertire in datetime o smalldatetime .
Esempio 7 – Omissione della data
Se ometti la data durante la conversione in datetime o smalldatetime tipi di dati, restituirà 1900-01-01
come data:
SELECT CONVERT(datetime, '2pm') AS Risultato;
Risultato:
+-------------------------+| Risultato ||------------|| 1900-01-01 14:00:00.000 |+--------------------------+
Se ricevi un errore durante il tentativo di convertire una stringa in una data, prova con PARSE()
funzione invece. Funzionerà in alcuni casi in cui CONVERT()
no.
Potresti anche voler controllare il CAST()
funzione, che è un modo standard ANSI SQL per la conversione tra tipi di dati. Ecco come convertire una stringa in una data/ora usando CAST()
.