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

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

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