PostgreSQL中如何为Users表每个ID匹配多个指定日期生成扩展行
实现方法
在PostgreSQL中可以通过**交叉连接(CROSS JOIN)**手动构造的日期列表实现需求,核心是利用交叉连接将左表的每行数据与右表的每行数据做全匹配。
固定两个日期的实现代码
SELECT u.id, u.name, d.date FROM "Users" u CROSS JOIN ( -- 手动构造指定的两个日期行 VALUES ('2021-01-01'::DATE), ('2021-02-01'::DATE) ) AS d(date);
扩展:批量生成连续日期的写法
如果后续需要匹配连续的日期段,可以使用PostgreSQL内置的generate_series函数,不需要逐个写日期值,示例(生成2021年全年每月1号):
SELECT u.id, u.name, d.date::DATE FROM "Users" u CROSS JOIN generate_series( '2021-01-01'::DATE, '2021-12-01'::DATE, '1 month'::INTERVAL ) AS d(date);
内容的提问来源于stack exchange,提问作者Hjin
相关产品推荐
相关产品推荐

