如何在PostgreSQL中获得周期间(Week Start to Weekend)?

时间:2018-10-04 10:00:06

标签: postgresql sql-date-functions

我有一个日期列'visit_date',格式为'2018-10-04'。

我需要导出“ Week-Start to Week-End”格式的列 “ 10月1日至10月7日”或“ 10月1日至10月7日”,这意味着 我需要连接2个日期-Week Begin和Week End帖子,我需要排除日期的“ Year”部分。

Saw an answer here.部分符合我的要求,答案为“ 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 :(得分:0)

如果只需要格式化日期,则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

demo: db<>fiddle

Mon给出了三个字母的月份

DD赋予了一天

FM前缀删除前导零

th suppif将“ st”,“ nd”,“ rd”,“ th”结尾

答案 1 :(得分:0)

 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,它允许自定义日期格式。

通常不需要存储这种类型的数据,因为以后可以使用与上面插入的方式相同的方式对其进行查询,并且如果您确实需要对此信息进行查询,则最好存储它们作为日期而不是字符串,但是,上面的查询将满足您所描述的需求。