Как получить недельный период (Week Start to Weekend) в PostgreSQL? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть столбец даты 'visit_date' в формате '2018-10-04'.

Мне нужно вывести столбец «От начала недели до конца недели» в формате «с 1 октября по 7 октября» или «с 1 октября по 7 октября», что означает, что мне нужно объединить 2 даты - Неделя началаи сообщение «Конец недели», в котором мне нужно исключить часть дат «Год».

Увидел ответ здесь. Это частично соответствует моему требованию, где ответ будет "2018-09-03 до 2018-09-09 "

SELECT date_trunc('week', visit_date)::date || ' -> '|| (date_trunc('week', visit_date)+ '6 days'::interval)::date as WeekPeriod

Ответы [ 2 ]

0 голосов
/ 04 октября 2018
 select to_char(date_trunc('week', visit_date),'YYYY-MM-DD')||'->'||
 to_char((date_trunc('week', visit_date)+ '6 days'::interval),'YYYY-MM-DD') weekPeriod

Ключевым моментом здесь является to_char, который позволяет использовать пользовательские форматы даты.

Как правило, нет необходимости хранить данные этого типа, так как они могут быть запрошены в будущем так же, как они были вставлены выше, и если вам НЕОБХОДИМО делать запросы по этой информации, было бы лучшеоднако для сохранения их в виде дат, а не строк, приведенный выше запрос удовлетворит описанную вами потребность.

0 голосов
/ 04 октября 2018

Если вам просто нужно отформатировать дату, to_char - это то, что вам нужно (https://www.postgresql.org/docs/current/static/functions-formatting.html):

SELECT to_char(your_date, 'Mon FMDD')     --> Oct 1    
SELECT to_char(your_date, 'FMDDth Mon')   --> 1st Oct

демо: db <> fiddle

Mon дает трехбуквенный месяц

DD дает день * Префикс 1011 *

FM удаляет ведущие нули

th если добавляется "st", "nd "," rd "," th "окончание

...