sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan ændres det aktuelle datoformat i SQL Server (T-SQL)

Når du opretter forbindelse til SQL Server, er datoformatet normalt bestemt af dit sprog. Standardsproget for en session er sproget for den pågældende sessions login, medmindre det tilsidesættes på per-session-basis ved at bruge Open Database Connectivity (ODBC) eller OLE DB API'er.

Datoformatindstillingen påvirker fortolkningen af ​​tegnstrenge, når de konverteres til datoværdier til lagring i databasen. Det påvirker ikke visningen af ​​datodatatypeværdier, der er gemt i databasen, eller lagerformatet.

På trods af at din sessions sprog bestemmer datoformatet, kan du tilsidesætte datoformatet, hvis det kræves. For eksempel, hvis dit sprog er us_english , vil datoformatet være mdy (så at 01/07/2018 repræsenterer den 1. juli og ikke den 7. januar). Du kan ændre dette, så datoformatet er dmy (eller et hvilket som helst andet format), mens sproget forbliver us_english .

Du kan bruge T-SQL til eksplicit at indstille datoformatet for den aktuelle session ved at bruge SET DATEFORMAT erklæring.

Syntaks

Sådan går syntaksen:

SET DATEFORMAT { format | @format_var }

Hvor format | @format_var er rækkefølgen af ​​datodelene.

Gyldige værdier er mdy , dmy , ymd , ydm , myd og dym . Disse kan enten være Unicode eller dobbeltbyte tegnsæt (DBCS) konverteret til Unicode.

Bemærk dog, at  ydm understøttes ikke for datodatetime2 og datotidsforskydning datatyper.

Eksempel

Før vi ændrer noget, lad os se på de aktuelle brugerindstillinger. Dette vil fortælle os, hvad det aktuelle sprog er og datoformatet (samt et par andre ting):

DBCC USEROPTIONS;

Resultat:

+-------------------------+----------------+
| 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 |
+-------------------------+----------------+

Vi kan se, at sproget er us_english og datoformatet er mdy (som er standarddatoformatet for det pågældende sprog).

Så lad os ændre datoformatet, og tjek derefter brugerindstillingerne igen:

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Resultat:

 
+-------------------------+----------------+
| 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 |
+-------------------------+----------------+

Og vi kan se, at datoformatet har ændret sig, mens sproget forbliver det samme.

Så dette er, hvordan du ændrer datoformatet uden at ændre sproget. Som nævnt, hvis du ændrer sproget, vil det implicit sætte datoformatet på samme tid. Hvis det er det, du vil gøre, så tjek Sådan indstilles det aktuelle sprog i SQL Server (T-SQL).


  1. Sådan fungerer OCTET_LENGTH()-funktionen i MySQL

  2. Forespørgselsydelsesoptimering i MySQL

  3. Entity Framework opretter et tabelnavn i flertal, men visningen forventer et tabelnavn i ental?

  4. ved hjælp af kommaseparerede værdier inde i IN-sætning for NUMBER kolonne