In SQL Server puoi utilizzare CAST()
funzione per convertire un'espressione di un tipo di dati in un altro. Questa funzione funziona quasi allo stesso modo di CONVERT()
funzione, tranne per il fatto che la sintassi è leggermente diversa (e CAST()
non accetta lo style
argomento).
Quindi, se hai bisogno di convertire una stringa in un valore di data/ora, puoi usare CONVERT()
o la funzione CAST()
funzione.
E se ricevi un errore durante l'utilizzo di queste due funzioni, PARSE()
la funzione potrebbe essere proprio ciò di cui hai bisogno.
Questo articolo contiene esempi che utilizzano CAST()
funzione.
Sintassi
La sintassi è questa:
CAST ( espressione AS tipo_dati [ ( lunghezza ) ] )
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
.
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 secondo argomento).
SELECT CAST('20 Dec 2018' AS data) AS Risultato;
Risultato:
+------------+| Risultato ||------------|| 20-12-2018 |+------------+
Proprio come con CONVERT()
la stringa deve essere in uno stile che può essere convertito nel tipo di dati specificato, altrimenti riceverai un errore:
SELECT CAST('Homer' AS data) 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 CAST('20 Dec 2018' AS datetime) AS Result;
Risultato:
+-------------------------+| Risultato ||------------|| 20-12-2018 00:00:00.000 |+--------------------------+
Puoi anche specificare l'ora insieme alla data:
SELECT CAST('2pm 20 Dec 2018' AS datetime) AS Result;
Risultato:
+-------------------------+| Risultato ||------------|| 2018-12-20 14:00:00.000 |+--------------------------+
Esempio 3:conversione in tipo di dati datetime2
Qui convertiamo in datetime2 tipo di dati:
SELECT CAST('20 Dec 2018' AS datetime2) AS Risultato;
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 CAST('20 Dec 2018' AS datetimeoffset) AS Risultato;
Risultato:
+------------------------------------+| Risultato ||--------------------------------------|| 20-12-2018 00:00:00.0000000 +00:00 |+------------------------------------------------ ---
Esempio 5:conversione in tipo di dati smalldatetime
Qui convertiamo in smalldatetime tipo di dati:
SELECT CAST('20 Dec 2018' AS smalldatetime) 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 CAST('20 Dec 2018' AS time) 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 CAST('2pm' AS time) 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 CAST('2pm 20 Dec 2018' AS time) 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 CAST('2pm' AS datetime) AS Risultato;
Risultato:
+-------------------------+| Risultato ||------------|| 1900-01-01 14:00:00.000 |+--------------------------+
Se preferisci usare per usare CONVERT()
funzione, guarda queste stringhe a data/ora CONVERT()
esempi usando gli stessi esempi di cui sopra.
Inoltre, come accennato, se ricevi un errore mentre provi a convertire una stringa in una data, prova PARSE()
funzione invece. Funzionerà in alcuni casi in cui CAST()
no.