Database
 sql >> Baza danych >  >> RDS >> Database

Jak sformatować datę w T-SQL

Problem:

Chcesz wyświetlić wartość daty w innym formacie w SQL Server.

Przykład:

Nasza baza danych zawiera tabelę o nazwie company z danymi w kolumnach id (klucz podstawowy), nazwa i data_początkowa .

id imię data_początkowa
1 Lisa Bank 2019-01-20
2 Kredytowy Instytut Finansowy 2018-03-14
3 Williams Holding 28.10.2019

Dla każdej firmy przekształćmy datę rozpoczęcia na nowy format, „RRRR/MM/DD”, gdzie RRRR to 4-cyfrowy rok, MM to 2-cyfrowy miesiąc, a DD to 2-cyfrowy dzień.

Rozwiązanie 1:

Użyjemy CONVERT() funkcjonować. Oto zapytanie, które napiszesz:

SELECT 
  CONVERT(NVARCHAR, start_date, 111 ) AS new_date
FROM company;

Oto wynik:

nazwa data_początkowa
Lisa Bank 2019/01/20
Kredytowy Instytut Finansowy 2018/03/14
Williams Holding 28.10.2019

Dyskusja:

Użyj CONVERT() funkcja do zmiany formatu daty z danej kolumny lub wyrażenia.

Ta funkcja przyjmuje trzy argumenty:

  1. Nowy typ danych (w naszym przykładzie NVARCHAR).
  2. Nazwa wyrażenia lub kolumny zawierająca datę do sformatowania (w naszym przykładzie start_date kolumna).
  3. Opcjonalny kod stylu jako liczba całkowita. (W naszym przykładzie styl „111” wyświetla datę za pomocą ukośników do oddzielenia części).

Poniższa tabela przedstawia najpopularniejsze kody stylów daty:

kod opis
101 30.11.2019
102 2019.11.30
103 30/11/2019
104 30.11.2019
105 30-11-2019
110 11-30-2019
111 2019/11/30

Pełną listę stylów formatowania można znaleźć w dokumentacji T-SQL.

Powyższe zapytanie zmieniło format daty Lisa Bank 2019-01-20 na ciąg zawierający datę „2019/01/20”.

Rozwiązanie 2:

W SQL Server 2012 i nowszych, możesz użyć FORMAT() funkcja zmiany formatu daty/godziny. Użyj poniższych znaków, aby określić żądany format:

wzór opis
dd dzień w zakresie 01-31
MM miesiąc w zakresie 01-12
rr 2-cyfrowy rok
rrrr 4-cyfrowy rok
GG godzina w zakresie 00-23
mm minuty w zakresie 00-59
ss sekundy w zakresie 00-59

Oto zapytanie, które napisałbyś za pomocą FORMAT():

SELECT 
  FORMAT(start_date, ‘yyyy-MM-dd’ ) AS new_date
FROM company;

Pierwszym argumentem jest wartość daty i godziny/daty/czasu do ponownego sformatowania. Drugi to łańcuch zawierający wzorzec nowego formatu. Ta funkcja zwraca typ danych NVARCHAR. Użyj FORMAT() jeśli pracujesz na SQL Server 2012 lub nowszym i chcesz przekonwertować daty/godziny na ciągi zawierające sformatowane daty/godziny.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co robić (lub czego nie robić) ze statystykami top wait

  2. Model danych dla aplikacji do rezerwacji wizyt lekarskich

  3. Porównanie SQL, konstruktorów zapytań i ORM

  4. Jak dodać kolumnę w tabeli w SQL?

  5. Skuteczna obsługa wartości NULL za pomocą funkcji SQL COALESCE dla początkujących