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

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

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