sql >> Databáze >  >> RDS >> Sqlserver

Jak změnit aktuální formát data v SQL Server (T-SQL)

Když se připojíte k serveru SQL Server, formát data je obvykle určen vaším jazykem. Výchozí jazyk pro relaci je jazyk pro přihlášení k této relaci, pokud není přepsán pro jednotlivé relace pomocí rozhraní Open Database Connectivity (ODBC) nebo OLE DB API.

Nastavení formátu data ovlivňuje interpretaci znakových řetězců při jejich převodu na hodnoty data pro uložení v databázi. Nemá vliv na zobrazení hodnot datového typu data, které jsou uloženy v databázi, ani na formát úložiště.

Navzdory skutečnosti, že formát data určuje jazyk vaší relace, můžete formát data v případě potřeby přepsat. Pokud je například váš jazyk us_english , formát data bude mdy (takže 07/01/2018 představuje 1. července a nikoli 7. ledna). Můžete to změnit tak, aby formát data byl dmy (nebo jakýkoli jiný formát), zatímco jazyk zůstává us_english .

Pomocí T-SQL můžete explicitně nastavit formát data aktuální relace pomocí SET DATEFORMAT prohlášení.

Syntaxe

Zde je návod, jak probíhá syntaxe:

SET DATEFORMAT { format | @format_var }

Kde format | @format_var je pořadí částí data.

Platné hodnoty jsou mdy , dmy , ymd , ydm , myd a dym . Mohou to být buď Unicode, nebo dvoubajtové znakové sady (DBCS) převedené na Unicode.

Pamatujte však, že  ydm není podporováno pro datumdatetime2datetimeoffset datové typy.

Příklad

Než něco změníme, podívejme se na aktuální uživatelské možnosti. To nám řekne, jaký je aktuální jazyk a formát data (a také několik dalších věcí):

DBCC USEROPTIONS;

Výsledek:

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

Vidíme, že jazyk je us_english a formát data je mdy (což je výchozí formát data pro daný jazyk).

Změňme tedy formát data a poté znovu zkontrolujte uživatelské možnosti:

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Výsledek:

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

A můžeme vidět, že formát data se změnil, zatímco jazyk zůstává stejný.

Takto lze změnit formát data bez změny jazyka. Jak již bylo zmíněno, pokud změníte jazyk, implicitně se zároveň nastaví formát data. Pokud to chcete udělat, podívejte se na Jak nastavit aktuální jazyk na serveru SQL Server (T-SQL).


  1. Co byste měli vědět o webech založených na databázi

  2. Jak změním SQL Server 2005 tak, aby rozlišoval malá a velká písmena?

  3. Použití aliasu ve výpočtech SQL

  4. Vytvořte kontingenční zobrazení v SQL z tabulky SQL