PostgreSQL - 插入从 xxxx 年到 yyyy 年的所有周末日期

标签 postgresql generate-series set-returning-functions

我已经建立了一个假期表,其中包含从 2000 年到 2050 年的所有公共(public)假期。但我应该也放上所有周末日期,现在我正试图找到一种方法。有人可以提出建议吗?我查了一下,有计算工作日数的函数,但我需要插入这两年之间的所有周末。

最佳答案

如果是 8.4+:

select 
    a::date as Sunday, 
    a::date - 1 as Saturday
from generate_series('2000-01-02'::date, '2050-12-31', '7 days') s(a)
;

否则:

select 
    '2000-01-02'::date + s.a as Sunday, 
    '2000-01-02'::date + s.a - 1 as Saturday
from generate_series(0, '2050-12-31'::date - '2000-01-02'::date, 7) s(a)
;

关于PostgreSQL - 插入从 xxxx 年到 yyyy 年的所有周末日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625281/

相关文章:

postgresql - 在postgis中按中心点、半径、内角和方位角绘制扇区

node.js - Sequelize 多重插入数据

sql - 使用 CASE 和 generate_series() 查询,将结果 timestamptz 降序排列

sql - 获取字符串中的每个 <tag> - stackexchange 数据库

sql - 使用 string_to_array() 将 Oracle 转换为 PostgreSQL 查询

ruby - 如何在 created_at 字段上分组并仅返回日期和小时

数据库行/记录指针

sql - generate_series() 在 PostgreSQL 中无法按预期方式使用 sum

postgresql - 使用 generate_series() 为每一天生成 30 天的日期范围?

php - CakePHP 使用 LEFT JOIN 和 generate_series 查找