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

6 modi per convertire una stringa in un valore di data/ora in SQL Server

Se è necessario convertire una stringa in un valore di data/ora in SQL Server, sono disponibili diverse opzioni. In questo post descrivo sei funzioni T-SQL che ti consentono di farlo.

Le sei funzioni sono:

  • CAST()
  • CONVERT()
  • PARSE()
  • TRY_CAST()
  • TRY_CONVERT()
  • TRY_PARSE()

Di seguito sono riportati esempi di come utilizzare queste funzioni per convertire una stringa in un tipo di dati data/ora.

La funzione CAST()

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 |+------------+

Per altri esempi, vedere Come convertire una stringa in una data/ora in SQL Server utilizzando CAST() .

La funzione CONVERT()

Qui, eseguiamo la stessa conversione dell'esempio precedente, ma con CONVERT() funzione. L'unica differenza qui è la sintassi.

SELECT CONVERT(date, '20 Dec 2018') AS Risultato;

Risultato:

+------------+| Risultato ||------------|| 20-12-2018 |+------------+

Per altri esempi, vedere Come convertire una stringa in una data/ora in SQL Server utilizzando CONVERT() .

La funzione PARSE()

In questo esempio, aggiungo il giorno della settimana come parte della stringa. Il motivo per cui lo faccio è dimostrare il vantaggio che questa funzione ha rispetto alle altre. Se fornisci la data in questo formato alle altre funzioni, riceverai un errore. Ma il PARSE() la funzione può gestire questo:

SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2) AS 'Result';

Risultato:

+-----------------------------+| Risultato ||---------------||| 20-12-2018 00:00:00.0000000 |+-----------------------------+

Per altri esempi, vedere Come convertire una stringa in una data/ora in SQL Server utilizzando PARSE() .

La funzione TRY_CAST()

Puoi usare TRY_CAST() invece di CAST() per fornire un modo più agevole di gestire gli errori. Quando si utilizza CAST() funzione, se il cast non riesce, restituisce un errore. Tuttavia, se usi TRY_CAST() funzione invece, restituisce NULL in questi casi.

Ecco un esempio di un cast non riuscito:

SELECT TRY_CAST('Next month' AS date) AS Risultato;

Risultato:

+----------+| Risultato ||----------|| NULL |+----------+

Se forniamo lo stesso valore a CAST() funzione invece, ecco cosa succede:

SELECT CAST('Next month' AS date) AS Result;

Risultato:

Conversione non riuscita durante la conversione di data e/o ora dalla stringa di caratteri.

Per altri esempi, vedi CAST rispetto a TRY_CAST in SQL Server:qual è la differenza?

La funzione TRY_CONVERT()

Puoi anche usare TRY_CONVERT() invece di CONVERT() per una migliore gestione degli errori. Se il CONVERT() funzione fallisce restituisce un errore. Ma se il TRY_CONVERT() fallisce, restituisce NULL .

Ecco un esempio di conversione non riuscita:

SELECT TRY_CONVERT(date, 'Next month') AS Risultato;

Risultato:

+----------+| Risultato ||----------|| NULL |+----------+

Se forniamo lo stesso valore a CONVERT() funzione invece, ecco cosa succede:

SELECT CONVERT(date, 'Next month') AS Risultato;

Risultato:

Conversione non riuscita durante la conversione di data e/o ora dalla stringa di caratteri.

Per altri esempi, vedi CONVERT vs TRY_CONVERT in SQL Server:qual è la differenza?

La funzione TRY_PARSE()

Puoi anche usare TRY_PARSE() invece di PARSE() per una migliore gestione degli errori. Se il PARSE() funzione fallisce restituisce un errore. Ma se il TRY_PARSE() fallisce, restituisce NULL .

Ecco un esempio di conversione non riuscita:

SELECT TRY_PARSE('Next month' AS date) AS Risultato;

Risultato:

+----------+| Risultato ||----------|| NULL |+----------+

Se forniamo lo stesso valore a PARSE() funzione invece, ecco cosa succede:

SELECT PARSE('Next month' AS date) AS Result;

Risultato:

Errore durante la conversione del valore della stringa "Mese successivo" nel tipo di dati data utilizzando le impostazioni cultura ''.