如何为以下输出编写日期功能
how to wite the date fuctionality for below output
我想要全年这样的输出:
Jan 01 - Jan 14 - 2021
Jan 15 - Jan 28 - 2021
Jan 29 - Feb 11 - 2021
Feb 12 - Feb 25 - 2021
Feb 26 - Mar 11 - 2021
Mar 12 - Mar 25 - 2021
Mar 26 - Apr 08 - 2021
Apr 09 - Apr 22 - 2021
Apr 22 - May 06 - 2021
May 07 - May 20 - 2021
May 21 - Jun 03 - 2021
Jun 04 - Jun 17 - 2021
Jun 18 - Jul 01 - 2021
Jul 02 - Jul 15 - 2021
Jul 16 - Jul 29 - 2021
Jul 30 - Aug 12 - 2021
Aug 13 - Aug 26 - 2021
Aug 27 - Sep 09 - 2021
Sep 10 - Sep 23 - 2021
Sep 24 - Oct 07 - 2021
Oct 08 - Oct 21 - 2021
Oct 22 - Nov 04 - 2021
Nov 05 - Nov 18 - 2021
Dec 19 - Dec 02 - 2021
Dec 03 - Dec 16 - 2021
Dec 17 - Dec 30 - 2021
一个选项使用 generate_series()
:
select d.dt dt_start, d.dt + '13 days'::interval dt_end
from generate_series(
date_trunc('year', current_date),
date_trunc('year', current_date) + '1 year'::interval - '13 days'::interval,
'14 days'::interval
) d(dt)
order by dt_start
SELECT to_char(d, 'Mon DD - ')
|| to_char(d + INTERVAL '13 days', 'Mon DD - YYYY')
FROM generate_series(
TIMESTAMP '2021-01-01',
TIMESTAMP '2021-12-17',
INTERVAL '14 days'
) AS d;
?column?
------------------------
Jan 01 - Jan 14 - 2021
Jan 15 - Jan 28 - 2021
Jan 29 - Feb 11 - 2021
Feb 12 - Feb 25 - 2021
Feb 26 - Mar 11 - 2021
Mar 12 - Mar 25 - 2021
Mar 26 - Apr 08 - 2021
Apr 09 - Apr 22 - 2021
Apr 23 - May 06 - 2021
May 07 - May 20 - 2021
May 21 - Jun 03 - 2021
Jun 04 - Jun 17 - 2021
Jun 18 - Jul 01 - 2021
Jul 02 - Jul 15 - 2021
Jul 16 - Jul 29 - 2021
Jul 30 - Aug 12 - 2021
Aug 13 - Aug 26 - 2021
Aug 27 - Sep 09 - 2021
Sep 10 - Sep 23 - 2021
Sep 24 - Oct 07 - 2021
Oct 08 - Oct 21 - 2021
Oct 22 - Nov 04 - 2021
Nov 05 - Nov 18 - 2021
Nov 19 - Dec 02 - 2021
Dec 03 - Dec 16 - 2021
Dec 17 - Dec 30 - 2021
(26 rows)
我想要全年这样的输出:
Jan 01 - Jan 14 - 2021
Jan 15 - Jan 28 - 2021
Jan 29 - Feb 11 - 2021
Feb 12 - Feb 25 - 2021
Feb 26 - Mar 11 - 2021
Mar 12 - Mar 25 - 2021
Mar 26 - Apr 08 - 2021
Apr 09 - Apr 22 - 2021
Apr 22 - May 06 - 2021
May 07 - May 20 - 2021
May 21 - Jun 03 - 2021
Jun 04 - Jun 17 - 2021
Jun 18 - Jul 01 - 2021
Jul 02 - Jul 15 - 2021
Jul 16 - Jul 29 - 2021
Jul 30 - Aug 12 - 2021
Aug 13 - Aug 26 - 2021
Aug 27 - Sep 09 - 2021
Sep 10 - Sep 23 - 2021
Sep 24 - Oct 07 - 2021
Oct 08 - Oct 21 - 2021
Oct 22 - Nov 04 - 2021
Nov 05 - Nov 18 - 2021
Dec 19 - Dec 02 - 2021
Dec 03 - Dec 16 - 2021
Dec 17 - Dec 30 - 2021
一个选项使用 generate_series()
:
select d.dt dt_start, d.dt + '13 days'::interval dt_end
from generate_series(
date_trunc('year', current_date),
date_trunc('year', current_date) + '1 year'::interval - '13 days'::interval,
'14 days'::interval
) d(dt)
order by dt_start
SELECT to_char(d, 'Mon DD - ')
|| to_char(d + INTERVAL '13 days', 'Mon DD - YYYY')
FROM generate_series(
TIMESTAMP '2021-01-01',
TIMESTAMP '2021-12-17',
INTERVAL '14 days'
) AS d;
?column?
------------------------
Jan 01 - Jan 14 - 2021
Jan 15 - Jan 28 - 2021
Jan 29 - Feb 11 - 2021
Feb 12 - Feb 25 - 2021
Feb 26 - Mar 11 - 2021
Mar 12 - Mar 25 - 2021
Mar 26 - Apr 08 - 2021
Apr 09 - Apr 22 - 2021
Apr 23 - May 06 - 2021
May 07 - May 20 - 2021
May 21 - Jun 03 - 2021
Jun 04 - Jun 17 - 2021
Jun 18 - Jul 01 - 2021
Jul 02 - Jul 15 - 2021
Jul 16 - Jul 29 - 2021
Jul 30 - Aug 12 - 2021
Aug 13 - Aug 26 - 2021
Aug 27 - Sep 09 - 2021
Sep 10 - Sep 23 - 2021
Sep 24 - Oct 07 - 2021
Oct 08 - Oct 21 - 2021
Oct 22 - Nov 04 - 2021
Nov 05 - Nov 18 - 2021
Nov 19 - Dec 02 - 2021
Dec 03 - Dec 16 - 2021
Dec 17 - Dec 30 - 2021
(26 rows)