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_datekolumna). - 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.