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:
- Nowy typ danych (w naszym przykładzie NVARCHAR).
- Nazwa wyrażenia lub kolumny zawierająca datę do sformatowania (w naszym przykładzie
start_date
kolumna). - 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.