在 PostgreSQL 中生成跨非连续年份的时间序列
在 PostgreSQL 中生成两个日期之间的完整时间序列需要仔细考虑,特别是在处理跨越多年的日期时。 在这种情况下,使用 generate_series
和 extract(doy)
的常见方法可能会产生不准确的结果。
更稳健的方法
卓越的解决方案将 PostgreSQL 的 generate_series
函数与 date_trunc
和 interval
结合使用。无论年份如何,该技术都能可靠地生成任何日期范围内的时间序列。
以下查询举例说明了这种改进的方法:
<code class="language-sql">SELECT date_trunc('day', dd)::date FROM generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval) dd;</code>
这是一个细分:
generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval)
:这会生成一系列时间戳,在指定的开始日期和结束日期之间按一天递增。date_trunc('day', dd)
:此函数将时间戳截断到每天的开始,删除时间部分。::date
:这会将生成的时间戳转换为 date
数据类型以获得更清晰的输出。这种改进的方法提供了一种精确可靠的方法,用于在 PostgreSQL 中创建跨非连续年份的时间序列。
以上是如何在 PostgreSQL 中生成非连续年份之间的时间序列?的详细内容。更多信息请关注PHP中文网其他相关文章!