Problema:
Vorresti convertire una stringa contenente una data e un'ora in un valore TIME in SQL Server.
Dobbiamo convertire una stringa contenente il nome, la data e l'ora del giorno della settimana in un valore TIME.
Soluzione 1:
Useremo il PARSE()
funzione. Ecco la domanda che scriveresti:
SELECT PARSE('Sunday, 2 February 2020 11:23:11.1134505' AS TIME ) AS time_value;
Ecco il risultato:
11:23:11.1134505
Discussione:
Usa PARSE()
funzione per convertire una stringa contenente un nome, una data e un'ora del giorno della settimana nel tipo di dati TIME. Questa funzione accetta la stringa da convertire, la parola chiave AS e un nuovo tipo di dati (nel nostro esempio, TIME
). La stringa deve contenere un valore che rappresenta questo tipo di dati. Nel nostro esempio, la stringa 'February 2, 2020 11:23:11.1134505'
memorizza un valore temporale.
Si noti che l'ora è solo una parte di questa stringa, che contiene anche il nome del giorno della settimana. Non utilizzare il CONVERT()
o CAST()
funzioni in questo caso; restituiscono anche un tipo di dati TIME, ma senza il giorno della settimana.
Se stai utilizzando una lingua parlata diversa dalla lingua del server, includi la parola chiave USING e il codice cultura appropriato. Per la lingua polacca, dovresti scrivere:
SELECT PARSE('Niedziela, 2 lutego 2020 11:23:11.1134505' AS TIME USING 'pl-PL' ) AS time_value;
Per ulteriori informazioni sui valori dei parametri delle impostazioni cultura, vedere la documentazione ufficiale di SQL Server.
In questo caso, dovresti usare PARSE()
funzione, anche se non ha le migliori prestazioni. Se stai operando su una stringa che rappresenta un valore temporale che non memorizzare dati aggiuntivi (come il nome del giorno della settimana), utilizzare il CASE()
funzione. Ecco un esempio.
Soluzione 2:
SELECT CAST('2 February 2020 11:23:11.1134505' AS TIME ) AS time_value;
Ecco il risultato:
11:23:11.1134505
La stringa contenente la data e l'ora da convertire deve essere nel formato del tipo di dati di data e ora T-SQL. Puoi leggere di più nella documentazione di SQL Server.
Il CAST()
la funzione è ANSI SQL Standard e le sue prestazioni sono migliori di CONVERT()
o PARSE()
.
Infine, puoi anche usare il CONVERT()
funzione. Guarda il prossimo esempio.
Soluzione 3:
SELECT CONVERT(TIME, '2 Feb, 2020 11:23:11.1134505') AS time_value;
Il risultato:
11:23:11.1134505
Il CONVERT()
La funzione accetta tre argomenti:il nuovo tipo di dati, la stringa da convertire e il formato desiderato (opzionale). Tuttavia, dovresti usare questa funzione solo se devi specificare come formattare i dati di data e ora, perché le sue prestazioni non sono buone come CAST()
.