从预定义日期生成序列(PG)



我正试图从一个开始日期生成一系列每月日期,该日期恰好是我的users表中最年长用户的日期。

虽然我可以很容易地选择一些日期;

SELECT generate_series(
now(),
now() + '5 months'::interval,
'1 month'::interval);

并且可以选择我需要开始的日期:

SELECT to_date( to_char(CAST(min(created_at) AS DATE),'yyyy-MM') || '-01','yyyy-mm-dd') from users

到目前为止,我如何将两者结合起来,以便每个月都进行选择?

事实证明,它甚至可以更简单。:)

SELECT generate_series(
          date_trunc('year', min(created_at))
        , now()
        , interval '1 month') AS month;
FROM   users;

有关date_trunc的详细信息,请参阅手册。

或者,如果您确实想要数据类型date而不是timestamp with time zone:

SELECT generate_series(
          date_trunc('year', min(created_at))
        , now()
        , interval '1 month')::date AS month;
FROM   users;

结果很简单:

SELECT generate_series(
(SELECT to_date( to_char(CAST(min(created_at) AS DATE),'yyyy-MM') || '-01','yyyy-mm-dd') from users),
now(),
'1 month'::interval) as month;

最新更新