Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment convertir une valeur de date/heure en chaîne dans SQL Server à l'aide de CONVERT()

Lorsque vous utilisez SQL Server, vous pouvez convertir une valeur de date/heure en une chaîne en utilisant le CONVERT() une fonction. Cette fonction vous permet de convertir entre différents types de données.

Dans cet article, nous allons convertir entre différents types de données date/heure en un varchar ou nvarchar chaîne.

L'un des avantages de cette fonction est qu'elle vous permet de spécifier le style dans lequel la date sera renvoyée. Par exemple, vous pouvez spécifier si elle est renvoyée sous la forme mm/jj/aaaa , aaaa.mm.jj , Lun jj, aaaa , etc. Vous pouvez également spécifier si le composant de temps est renvoyé et comment il est stylisé.

Syntaxe

Tout d'abord, voici comment fonctionne la syntaxe officielle :

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Ces arguments sont définis comme suit :

expression
Toute expression valide.
data_type
Le type de données cible. Cela inclut xmlbigint , et sql_variant . Les types de données d'alias ne peuvent pas être utilisés.
length
Un entier facultatif qui spécifie la longueur du type de données cible. La valeur par défaut est 30 .
style
Une expression entière qui spécifie comment le CONVERT() la fonction traduira expression . Pour une valeur de style NULL, NULL est renvoyé. type_données détermine la plage.

Exemple de base

Dans cet exemple, nous déclarons une variable et attribuons une valeur à partir de GETDATE() une fonction. Nous renvoyons ensuite la valeur, et nous convertissons également cette valeur en varchar et retournez ça :

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar, @date) AS Converted;

Résultat :

+-------------------------+---------------------+
| Original                | Converted           |
|-------------------------+---------------------|
| 2018-06-07 03:08:21.997 | Jun  7 2018  3:08AM |
+-------------------------+---------------------+

La longueur par défaut du type de données de retour est 30 , donc même si nous n'avons spécifié que varchar , il renverra le résultat sous la forme d'un varchar(30) .

Dans cet exemple, nous n'avons pas fourni de troisième argument pour indiquer le style dans lequel nous voulons qu'il soit renvoyé. Par conséquent, il a été converti en utilisant le style par défaut pour datetime et smalldatetime types de données, qui est 0 ou 100 (plus sur les styles ci-dessous).

Spécification d'un style

Vous pouvez utiliser un troisième argument pour spécifier le style que prendra la valeur de retour :

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar(30), @date, 102) AS Converted;

Résultat :

+-------------------------+-------------+
| Original                | Converted   |
|-------------------------+-------------|
| 2018-06-07 03:42:33.840 | 2018.06.07  |
+-------------------------+-------------+

Dans cet exemple, nous avons spécifié un style de 102 , qui est la norme ANSI pour l'affichage d'une date avec un composant d'année à quatre chiffres.

Pour changer cela en un format ANSI avec une année à deux chiffres, nous pouvons utiliser un style de 2 :

DECLARE @date datetime = GETDATE();
SELECT
    @date AS Original,
    CONVERT(varchar(30), @date, 2) AS Converted;

Résultat :

+-------------------------+-------------+
| Original                | Converted   |
|-------------------------+-------------|
| 2018-06-07 03:44:52.433 | 18.06.07    |
+-------------------------+-------------+

Vous pouvez voir plus d'exemples sur CONVERT() de la date/heure aux exemples de chaîne dans SQL Server.