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

Come convertire una stringa in una data/ora in SQL Server utilizzando CONVERT()

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 xmlgrandesql_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() .