W Postgresie to_char()
to funkcja formatowania typu danych, która konwertuje swój pierwszy argument na łańcuch.
Format ciągu jest określony przez drugi argument.
to_char()
funkcja może być użyta do wykonania następujących konwersji:
- znacznik czasu do ciągu
- odstęp do ciągu
- liczba całkowita do ciągu
- rzeczywista/podwójna precyzja do łańcucha
- liczba do ciągu
Składnia
Składnia wygląda tak:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Gdzie pierwszy argument to wartość do konwersji (w dowolnym z wymienionych typów danych) i text
jest ciągiem formatu, za pomocą którego należy sformatować pierwszy argument.
Przykład
Oto przykład formatowania wartości daty:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Wynik:
Friday , 25 December 2020
W tym przypadku ciąg formatu Day, DD Month YYYY
określa sposób formatowania daty, gdy jest zwracana jako ciąg przez to_char()
.
Wzorce szablonów
Ciąg formatu składa się z co najmniej jednego wzoru szablonu .
W poprzednim przykładzie mój ciąg formatu to Day, DD Month YYYY
. Dlatego składał się z następujących wzorców szablonów:
Day
DD
Month
YYYY
Mogłem użyć mniej lub więcej szablonów, a wynik byłby inny.
Na przykład mógłbym zrobić co następuje:
SELECT to_char(date '2020-12-25', 'Day');
Wynik:
Friday
Ewentualnie mój ciąg formatu może składać się z zupełnie innej serii wzorców szablonów.
Na przykład:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Wynik:
Fri, 25 Dec 20
Modyfikatory wzorców szablonów
Możesz również dodać modyfikatory wzorca szablonu do ciągu formatu.
Wynik będzie nieco inny w zależności od użytego modyfikatora.
Na przykład poniższy przykład przedstawia dzień miesiąca jako liczbę porządkową.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Wynik:
Friday , 25 December 2020
To jest to samo, co w pierwszym przykładzie, ale różnica polega na tym, że dodałem th
modyfikator szablonu jako przyrostek do DD
wzór szablonu. Dodaje to przyrostek liczby porządkowej do dnia miesiąca.
Dlatego kończymy na 25. zamiast zaledwie 25 .
Aby podkreślić efekt modyfikatora szablonu, oto jak wygląda po zastosowaniu do różnych wartości.
SELECT
to_char(date '2020-12-01', 'DDth') AS "1",
to_char(date '2020-12-02', 'DDth') AS "2",
to_char(date '2020-12-03', 'DDth') AS "3",
to_char(date '2020-12-04', 'DDth') AS "4";
Wynik:
1 | 2 | 3 | 4 ------+------+------+------ 01st | 02nd | 03rd | 04th
W razie potrzeby mógłbym dodać kolejny modyfikator, aby pominąć wiodące zera.
SELECT
to_char(date '2020-12-01', 'FMDDth') AS "1",
to_char(date '2020-12-02', 'FMDDth') AS "2",
to_char(date '2020-12-03', 'FMDDth') AS "3",
to_char(date '2020-12-04', 'FMDDth') AS "4";
Wynik:
1 | 2 | 3 | 4 -----+-----+-----+----- 1st | 2nd | 3rd | 4th
W tym przypadku dodałem FM
co oznacza „tryb napełniania”. Ten modyfikator eliminuje wiodące zera i odstępy dopełniania.
Liczba
Poprzedni przykład można również zastosować do wartości liczbowych.
Jednak używając wartości numerycznych, będziesz musiał zamienić D
z 9
lub 0
.
SELECT
to_char(1, '9th') AS "1",
to_char(2, '9th') AS "2",
to_char(3, '9th') AS "3",
to_char(4, '9th') AS "4";
Wynik:
1 | 2 | 3 | 4 ------+------+------+------ 1st | 2nd | 3rd | 4th
Lista wzorców i modyfikatorów szablonów
Rzeczywiste wzorce szablonów, których możesz użyć, zależą od tego, czy formatujesz wartość daty/godziny, czy liczbę.
Aby zobaczyć pełną listę dostępnych wzorców szablonów, zobacz:
- Wzorce i modyfikatory szablonów do formatowania daty/godziny
- Wzorce i modyfikatory szablonów do formatowania liczb