Quando si utilizza SQL Server, è possibile convertire un valore di data/ora in una stringa utilizzando CONVERT()
funzione. Questa funzione consente di convertire tra diversi tipi di dati.
In questo articolo, convertiremo tra vari tipi di dati di data/ora in un varchar
o nvarchar
stringa.
Uno degli aspetti positivi di questa funzione è che ti consente di specificare lo stile in cui verrà restituita la data. Ad esempio, puoi specificare se viene restituita come mm/gg/aaaa , aaaa.mm.gg , lun gg, aaaa , ecc. Puoi anche specificare se il componente temporale viene restituito e come viene applicato lo stile.
Sintassi
Innanzitutto, ecco come funziona la sintassi ufficiale:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
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 di base
In questo esempio, dichiariamo una variabile e assegniamo un valore da GETDATE()
funzione. Quindi restituiamo il valore e convertiamo anche quel valore in varchar
e restituiscilo:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar, @date) AS Converted;
Risultato:
+-------------------------+---------------------+ | Original | Converted | |-------------------------+---------------------| | 2018-06-07 03:08:21.997 | Jun 7 2018 3:08AM | +-------------------------+---------------------+
La lunghezza predefinita del tipo di dati di ritorno è 30
, quindi anche se abbiamo specificato solo varchar
, restituirà il risultato come varchar(30)
.
In questo esempio, non abbiamo fornito un terzo argomento per indicare lo stile in cui vogliamo che venga restituito. Pertanto, è stato convertito utilizzando lo stile predefinito per datetime e smalldatetime tipi di dati, che è 0
o 100
(maggiori informazioni sugli stili di seguito).
Specifica di uno stile
Puoi utilizzare un terzo argomento per specificare lo stile che assumerà il valore restituito:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 102) AS Converted;
Risultato:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:42:33.840 | 2018.06.07 | +-------------------------+-------------+
In questo esempio, abbiamo specificato uno stile di 102
, che è lo standard ANSI per la visualizzazione di una data con una componente anno a quattro cifre.
Per cambiarlo in un formato ANSI con un anno a due cifre, possiamo usare uno stile di 2
:
DECLARE @date datetime = GETDATE(); SELECT @date AS Original, CONVERT(varchar(30), @date, 2) AS Converted;
Risultato:
+-------------------------+-------------+ | Original | Converted | |-------------------------+-------------| | 2018-06-07 03:44:52.433 | 18.06.07 | +-------------------------+-------------+
Puoi vedere altri esempi su CONVERT() da Date/Time a String Examples in SQL Server.