PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как to_char() работи в PostgreSQL

В 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-ти

Списък с шаблони и модификатори

Действителните шаблони, които можете да използвате, зависят от това дали форматирате стойност за дата/час или число.

За пълен списък с налични шаблони вижте:

  • Шаблони и модификатори за форматиране на дата/час
  • Шаблони и модификатори за числово форматиране


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свържете приложение на C# Windows mobile 6.5 към база данни на Postgres?

  2. Добавете колона с времеви клеймо с по подразбиране СЕГА() само за нови редове

  3. Каква е разликата между LATERAL JOIN и подзаявка в PostgreSQL?

  4. MigrationSchemaMissing(Не може да се създаде таблицата django_migrations (%s) % exc)

  5. Django, mod_wsgi, psycopg2 Неправилно конфигуриран:Грешка при зареждане на модул psycopg2:Няма модул с име _psycopg