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

Comment modifier le format de la date actuelle dans SQL Server (T-SQL)

Lorsque vous vous connectez à SQL Server, le format de date est généralement déterminé par votre langue. La langue par défaut d'une session est la langue de connexion de cette session, à moins qu'elle ne soit remplacée pour chaque session à l'aide des API Open Database Connectivity (ODBC) ou OLE DB.

Le paramètre de format de date affecte l'interprétation des chaînes de caractères lorsqu'elles sont converties en valeurs de date pour le stockage dans la base de données. Cela n'affecte pas l'affichage des valeurs de type de données de date qui sont stockées dans la base de données ou le format de stockage.

Bien que la langue de votre session détermine le format de la date, vous pouvez remplacer le format de la date si nécessaire. Par exemple, si votre langue est us_english , le format de la date sera mdy (pour que 01/07/2018 représente le 1er juillet et non le 7 janvier). Vous pouvez changer cela pour que le format de date soit dmy (ou tout autre format) alors que la langue reste us_english .

Vous pouvez utiliser T-SQL pour définir explicitement le format de date de la session en cours en utilisant le SET DATEFORMAT déclaration.

Syntaxe

Voici comment fonctionne la syntaxe :

SET DATEFORMAT { format | @format_var }

Où format format | @format_var est l'ordre des parties de date.

Les valeurs valides sont mdy , dmy , ymd , ydm , myd , et dym . Il peut s'agir de jeux de caractères Unicode ou à deux octets (DBCS) convertis en Unicode.

Cependant, notez que  ydm n'est pas pris en charge pour datedateheure2 et datetimeoffset types de données.

Exemple

Avant de changer quoi que ce soit, examinons les options de l'utilisateur actuel. Cela nous indiquera la langue actuelle et le format de la date (ainsi que quelques autres éléments) :

DBCC USEROPTIONS;

Résultat :

+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | us_english     |
| dateformat              | mdy            |
| datefirst               | 7              |
| lock_timeout            | 5000           |
| quoted_identifier       | SET            |
| arithabort              | SET            |
| ansi_null_dflt_on       | SET            |
| ansi_warnings           | SET            |
| ansi_padding            | SET            |
| ansi_nulls              | SET            |
| concat_null_yields_null | SET            |
| isolation level         | read committed |
+-------------------------+----------------+

Nous pouvons voir que la langue est us_english et le format de date est mdy (qui est le format de date par défaut pour cette langue).

Modifions donc le format de la date, puis vérifions à nouveau les options utilisateur :

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Résultat :

 
+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | us_english     |
| dateformat              | dmy            |
| datefirst               | 7              |
| lock_timeout            | 5000           |
| quoted_identifier       | SET            |
| arithabort              | SET            |
| ansi_null_dflt_on       | SET            |
| ansi_warnings           | SET            |
| ansi_padding            | SET            |
| ansi_nulls              | SET            |
| concat_null_yields_null | SET            |
| isolation level         | read committed |
+-------------------------+----------------+

Et nous pouvons voir que le format de la date a changé, tandis que la langue reste la même.

Voici donc comment changer le format de la date sans changer la langue. Comme mentionné, si vous changez de langue, cela définira implicitement le format de date en même temps. Si c'est ce que vous voulez faire, consultez Comment définir la langue actuelle dans SQL Server (T-SQL).