В Postgres, to_char()
е функция за форматиране на тип данни, която преобразува първия си аргумент в низ.
Форматът на низа се определя от втория аргумент.
to_char()
функцията може да се използва за извършване на следните преобразувания:
- отпечатък за време към низ
- интервал до низ
- цяло число към низ
- реална/двойна прецизност към низ
- числова към низ
Синтаксис
Синтаксисът е така:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
Където първият аргумент е стойността за преобразуване (в който и да е от изброените типове данни) и text
е форматиращ низ, с който да се форматира първият аргумент.
Пример
Ето пример за форматиране на стойност за дата:
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
Резултат:
Петък, 25 декември 2020 г.
В този случай форматният низ Day, DD Month YYYY
определя как се форматира датата, когато се връща като низ от to_char()
.
Шаблони на шаблони
Форматният низ се състои от един или повече шаблони .
В предишния пример моят форматен низ беше Day, DD Month YYYY
. Следователно той се състоеше от следните шаблони:
Day
DD
Month
YYYY
Можех да използвам повече или по-малко шаблони и изходът щеше да бъде различен.
Например, можех да направя следното:
SELECT to_char(date '2020-12-25', 'Day');
Резултат:
петък
Като алтернатива моят форматен низ би могъл да се състои от различна серия от шаблони като цяло.
Например:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
Резултат:
пет, 25 декември 20
Модификатори на шаблонен шаблон
Можете също да добавите модификатори на шаблон към вашия низ за формат.
Резултатът ще бъде малко по-различен в зависимост от използвания модификатор.
Например, следващият пример представя деня от месеца като пореден номер.
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
Резултат:
Петък, 25 декември 2020 г.
Това е същото като първия пример, но разликата е, че добавих th
модификатор на шаблон като суфикс към DD
шаблонен модел. Това добавя наставката за порядък номер към деня от месеца.
Затова в крайна сметка се оказваме с25-ти вместо само 25 .
За да подчертаете ефекта от модификатора на шаблона, ето как изглежда, когато се прилага към различни стойности.
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";
Резултат:
<преди> 1 | 2 | 3 | 4 ------+------+------+------ 01-ви | 02-ри | 03-ти | 04Бих могъл да добавя друг модификатор за потискане на водещите нули, ако е необходимо.
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";
Резултат:
<преди> 1 | 2 | 3 | 4 -----+-----+-----+----- 1-ви | 2-ри | 3-та | 4-ти
В този случай добавих FM
което е за „режим на пълнене“. Този модификатор потиска водещите нули и празните полета.
Числови
Предишният пример може да се приложи и към числови стойности.
Въпреки това, когато използвате числови стойности, ще трябва да смените D
с или 9
или 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";
Резултат:
<преди> 1 | 2 | 3 | 4 ------+------+------+------ 1-ви | 2-ри | 3-та | 4-тиСписък с шаблони и модификатори
Действителните шаблони, които можете да използвате, зависят от това дали форматирате стойност за дата/час или число.
За пълен списък с налични шаблони вижте:
- Шаблони и модификатори за форматиране на дата/час
- Шаблони и модификатори за числово форматиране