Chaque fois que vous vous connectez à SQL Server, un ensemble de paramètres par défaut sont appliqués à votre session. Ceux-ci incluent les paramètres de langue et de format de date.
Le format de date est normalement déterminé par votre langue par défaut. Par exemple, si votre langue par défaut est us_english
, le format de date par défaut sera probablement mdy
, et le premier jour de la semaine sera le jour 7
(Dimanche).
Si vous changez de langue, le format de la date sera implicitement mis à jour en conséquence.
Cependant, vous avez toujours la possibilité de changer le format de la date sans changer la langue. Pour ce faire, vous pouvez utiliser SET DATEFORMAT
.
Exemple
Examinons d'abord les paramètres actuels.
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 | +-------------------------+----------------+
Donc ma langue actuelle est us_english
et le format de date est mdy
.
Modifions le format de la date et vérifions à nouveau.
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 | +-------------------------+----------------+
J'ai donc réussi à changer le format de la date sans changer la langue. Cependant, datefirst
reste le même. Si vous souhaitez modifier la datefirst
valeur, utilisez SET DATEFIRST
.
SET DATEFIRST 1;
DBCC USEROPTIONS;
Résultat :
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | dmy | | datefirst | 1 | | 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 | +-------------------------+----------------+
Dans ce cas, j'ai changé le premier jour de la semaine pour être le jour 1, qui est lundi.
Réinitialisez-le
Définir la langue définira implicitement le dateformat
et datefirst
paramètres à leurs valeurs par défaut pour cette langue (même si vous réinitialisez la langue à la langue actuelle).
Donc, dans mon cas, je peux réinitialiser la langue sur us_english
, et il réinitialisera également les valeurs de format de date.
SET LANGUAGE us_English;
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 | +-------------------------+----------------+