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 xml , bigint , 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.