W SQL Server możesz użyć T-SQL FORMAT()
funkcja formatowania daty i/lub czasu. Wystarczy podać dwa argumenty; data/godzina i format do użycia.
Format jest dostarczany jako ciąg formatu. Ciąg formatu określa, jak dane wyjściowe powinny być sformatowane.
FORMAT()
funkcja akceptuje również opcjonalny argument „kultura”, który pozwala określić język/lokal, do którego powinny być zgodne wyniki.
Przykład podstawowy
Oto podstawowy przykład użycia funkcji FORMAT()
funkcja formatowania daty.
Nieprzetworzona data
Po pierwsze, oto jak wygląda surowa randka. Jeśli uruchomimy następujące oświadczenie:
SELECT GETDATE();
Otrzymujemy wynik, który wygląda mniej więcej tak:
2018-05-03 02:36:54.480
Sformatowana data
Teraz możemy użyć FORMAT()
funkcji, aby sformatować tę datę i godzinę w naszym preferowanym formacie. Na przykład możemy to zrobić:
SELECT FORMAT( GETDATE(), 'D');
Co daje w wyniku:
Thursday, May 3, 2018
To tylko jeden z wielu formatów, które mogliśmy wybrać. Oto kolejny:
SELECT FORMAT( GETDATE(), 'd');
Co daje w wyniku:
5/3/2018
Rzeczywiste wyniki będą się różnić w zależności od użytej kultury. Domyślnie używany jest język bieżącej sesji, ale można go również zastąpić trzecim argumentem („kultura”).
Ustawianie ustawień regionalnych
Możemy dodać trzeci argument („kultura”) do powyższego kodu, aby określić ustawienia regionalne używane dla formatu daty.
Możemy to zrobić na przykład:
SELECT FORMAT( GETDATE(), 'd', 'en-gb');
Co daje w wyniku:
03/05/2018
Oto kolejny przykład:
SELECT FORMAT( GETDATE(), 'd', 'zh-cn');
Co daje w wyniku:
2018/5/3
Jeśli kultura nie podano argumentu, używany jest język bieżącej sesji.
Oto jak znaleźć język bieżącej sesji i jak go ustawić.
Pamiętaj, że bieżący język będzie zwykle taki sam, jak domyślny język użytkownika, ale może to nie mieć miejsca, jeśli użytkownik zmienił bieżący język za pomocą SET LANGUAGE
. W każdym razie możesz również dowiedzieć się, jaki jest język domyślny.
Jak możesz sobie wyobrazić, możesz uzyskać całkiem różne wyniki w zależności od twojego języka lub wartości jakiegokolwiek argumentu „kulturowego”. Zobacz, jak ustawienia języka mogą wpłynąć na wyniki FORMAT(), aby uzyskać więcej przykładów.
Wyodrębnianie miesiąca/tygodnia/roku
Możesz użyć FORMAT()
funkcja zwracająca tylko miesiąc, część daty, tydzień lub rok, zgodnie z wymaganiami.
Pamiętaj, że rozróżniana jest wielkość liter. Na przykład MMM
formatuje miesiąc inaczej niż mmm
.
Miesiąc
Przykładowy kod zwrotu części miesiąca:
SELECT FORMAT( GETDATE(), 'MMM');
Wynik:
May
Rok
Przykładowy kod zwrotu części roku:
SELECT FORMAT( GETDATE(), 'yyyy');
Wynik:
2018
Dzień
Przykładowy kod zwrotu części dnia:
SELECT FORMAT( GETDATE(), 'dddd');
Wynik:
Thursday
Ekstrakcja czasu
Możesz też użyć funkcji FORMAT()
funkcja zwracająca czas w określonym formacie.
Oto przykład:
SELECT FORMAT( GETDATE(), 'hh.mm');
Wynik:
03.37
Wskaźnik AM/PM
Możesz także dodać tt
aby dołączyć oznaczenie AM/PM:
SELECT FORMAT( GETDATE(), 'hh.mm tt');
Wynik:
03.37
Łączenie ciągów formatujących
Możesz również połączyć te ciągi formatu, aby zapewnić własny dostosowany format daty. Przykład:
SELECT FORMAT( GETDATE(), 'hh.mm tt dddd, dd MMMM, yyyy');
Wynik:
03.41 AM Thursday, 03 May, 2018
Informacje o specyfikatorach formatu daty i godziny
Poniższe artykuły zawierają wszystkie specyfikatory formatu daty i godziny, których można używać z FORMAT()
funkcja w SQL Server, wraz z przykładami T-SQL:
- Ciągi standardowego formatu daty i godziny
- Niestandardowe ciągi formatu daty i godziny
Są to te same specyfikatory formatu daty i godziny, które są obsługiwane przez .NET Framework (FORMAT()
funkcja opiera się na .NET Framework).
Informacje o specyfikatorach formatu liczbowego
Poniższe artykuły zawierają wszystkie specyfikatory formatu liczb, których można używać z FORMAT()
funkcja (np. do formatowania liczb):
- Standardowe ciągi formatu numerycznego
- Niestandardowe ciągi formatu liczb
Są to te same specyfikatory formatu liczbowego, które są obsługiwane przez .NET Framework.
Inne funkcje daty
T-SQL zawiera również szereg innych funkcji, które pomagają wyodrębnić części z dat. Należą do nich funkcje takie jak DAY()
, MONTH()
, YEAR()
, DATEPART()
i DATENAME()
.