Dans SQL Server, vous pouvez utiliser le CONVERT()
fonction pour convertir une expression d'un type de données en un autre. Par conséquent, si vous avez besoin de convertir une chaîne en format date/heure, cette fonction peut vous aider.
Cet article contient des exemples pour démontrer son utilisation.
Syntaxe
La syntaxe ressemble à ceci :
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 1 - Convertir en type de données de date
Dans cet exemple, nous convertissons la chaîne en date type de données (nous le spécifions en utilisant date
comme premier argument).
SELECT CONVERT(date, '20 Dec 2018') AS Result;
Résultat :
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Bien entendu, la chaîne doit être dans un style pouvant être converti dans le type de données spécifié, sinon vous obtiendrez une erreur :
SELECT CONVERT(date, 'Homer') AS Result;
Résultat :
Conversion failed when converting date and/or time from character string.
Exemple 2 - Convertir en type de données datetime
Dans cet exemple, nous convertissons en datetime type de données :
SELECT CONVERT(datetime, '20 Dec 2018') AS Result;
Résultat :
+-------------------------+ | Result | |-------------------------| | 2018-12-20 00:00:00.000 | +-------------------------+
Vous pouvez également spécifier l'heure :
SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;
Résultat :
+-------------------------+ | Result | |-------------------------| | 2018-12-20 14:00:00.000 | +-------------------------+
Exemple 3 - Convertir en type de données datetime2
Dans cet exemple, nous convertissons en datetime2 type de données :
SELECT CONVERT(datetime2, '20 Dec 2018') AS Result;
Résultat :
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
Exemple 4 - Convertir en type de données datetimeoffset
Dans cet exemple, nous convertissons en datetimeoffset type de données :
SELECT CONVERT(datetimeoffset, '20 Dec 2018') AS Result;
Résultat :
+------------------------------------+ | Result | |------------------------------------| | 2018-12-20 00:00:00.0000000 +00:00 | +------------------------------------+
Exemple 5 - Convertir en type de données smalldatetime
Dans cet exemple, nous convertissons en smalldatetime type de données :
SELECT CONVERT(smalldatetime, '20 Dec 2018') AS Result;
Résultat :
+---------------------+ | Result | |---------------------| | 2018-12-20 00:00:00 | +---------------------+
Exemple 6 - Convertir en type de données de temps
Dans cet exemple, nous convertissons en heure type de données :
SELECT CONVERT(time, '20 Dec 2018') AS Result;
Résultat :
+----------+ | Result | |----------| | 00:00:00 | +----------+
Dans ce cas, nous avons spécifié une date mais pas une heure, donc elle est revenue sous la forme 00:00:00
. Voici un autre exemple où nous spécifions une heure :
SELECT CONVERT(time, '2pm') AS Result;
Résultat :
+----------+ | Result | |----------| | 14:00:00 | +----------+
Mais si nous ajoutons la date, nous obtenons une erreur (contrairement à un exemple précédent lorsque nous avons converti en datetime ):
SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;
Résultat :
Conversion failed when converting date and/or time from character string.
Donc, dans ce cas, vous devrez convertir en datetime ou smalldatetime .
Exemple 7 – Omettre la date
Si vous omettez la date lors de la conversion en datetime ou smalldatetime types de données, il renverra 1900-01-01
comme date :
SELECT CONVERT(datetime, '2pm') AS Result;
Résultat :
+-------------------------+ | Result | |-------------------------| | 1900-01-01 14:00:00.000 | +-------------------------+
Si vous obtenez une erreur en essayant de convertir une chaîne en date, essayez le PARSE()
fonction à la place. Cela fonctionnera dans certains cas où CONVERT()
non.
Vous pouvez également consulter le CAST()
fonction, qui est une méthode standard ANSI SQL de conversion entre les types de données. Voici comment convertir une chaîne en une date/heure à l'aide de CAST()
.