Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zmienić bieżący format daty w SQL Server (T-SQL)

Kiedy łączysz się z SQL Server, zwykle format daty jest określany przez Twój język. Domyślnym językiem sesji jest język logowania tej sesji, chyba że zostanie nadpisany na podstawie sesji za pomocą Open Database Connectivity (ODBC) lub interfejsów API OLE DB.

Ustawienie formatu daty wpływa na interpretację ciągów znaków, ponieważ są one konwertowane na wartości daty w celu przechowywania w bazie danych. Nie ma to wpływu na wyświetlanie wartości typu danych, które są przechowywane w bazie danych, ani na format przechowywania.

Pomimo faktu, że język sesji określa format daty, w razie potrzeby możesz zmienić format daty. Na przykład, jeśli Twoim językiem jest us_english , format daty to mdy (tak, że 07.01.2018 oznacza 1 lipca, a nie 7 stycznia). Możesz to zmienić, aby format daty to dmy (lub w jakimkolwiek innym formacie), gdy język pozostaje us_english .

Możesz użyć T-SQL do jawnego ustawienia formatu daty bieżącej sesji za pomocą SET DATEFORMAT oświadczenie.

Składnia

Oto jak działa składnia:

SET DATEFORMAT { format | @format_var }

Gdzie format | @format_var to kolejność części daty.

Prawidłowe wartości to mdy , dmy , ymd , ydm , myd i dym . Mogą to być zestawy znaków Unicode lub dwubajtowe (DBCS) przekonwertowane na Unicode.

Pamiętaj jednak, że  ydm nie jest obsługiwany dla datadata/godzina2przesunięcie daty i godziny typy danych.

Przykład

Zanim cokolwiek zmienimy, spójrzmy na obecne opcje użytkownika. Dzięki temu dowiemy się, jaki jest bieżący język i format daty (a także kilka innych rzeczy):

DBCC USEROPTIONS;

Wynik:

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

Widzimy, że językiem jest us_english a format daty to mdy (który jest domyślnym formatem daty dla tego języka).

Zmieńmy więc format daty, a następnie ponownie sprawdź opcje użytkownika:

SET DATEFORMAT dmy;
DBCC USEROPTIONS;

Wynik:

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

Widzimy, że zmienił się format daty, a język pozostał ten sam.

Oto jak zmienić format daty bez zmiany języka. Jak wspomniano, jeśli zmienisz język, w tym samym czasie domyślnie ustawi się format daty. Jeśli to jest to, co chcesz zrobić, sprawdź Jak ustawić bieżący język w SQL Server (T-SQL).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z PIVOT w SQL Server 2008

  2. Wprowadzenie do tabel tymczasowych w SQL Server

  3. T-SQL uzyskuje liczbę dni roboczych między 2 datami

  4. Przedstawiamy odtwarzanie — nowa diagnostyka punktu w czasie dla Spotlight Cloud

  5. 5 sposobów na uzyskanie skróconej nazwy miesiąca z daty w SQL Server