作者:瀚高PG实验室 (Highgo PG Lab)
目录
文档用途
详细信息
文档用途
本文介绍了如何使用函数generate_series产生连续的时间数据。
详细信息
在一些业务场景下,有时需要数据库产生连续时间的数据。HGDB中,可以通过函数generate_series批量产生数据。
下面是按月、天、小时产生数据的示例。
按月产生连续数据
highgo=# SELECT to_char( T, 'yyyy-mm' ) AS TIME FROM generate_series(to_timestamp('2020-01', 'yyyy-mm'), to_timestamp('2020-10', 'yyyy-mm'), '1 months') AS T; time --------- 2020-01 2020-02 2020-03 2020-04 2020-05 2020-06 2020-07 2020-08 2020-09 2020-10 (10 rows) |
按天产生连续数据
highgo=# SELECT to_char( T, 'yyyy-mm-dd' ) AS TIME highgo-# FROM generate_series(to_timestamp('2020-01-01', 'yyyy-mm-dd'), to_timestamp('2020-01-03', 'yyyy-mm-dd'), '1 days') AS T; time ------------ 2020-01-01 2020-01-02 2020-01-03 (3 rows) |
按小时产生连续数据
highgo=# SELECT to_char( t, 'yyyy-mm-dd hh24:mi:ss' ) AS TIME highgo-# FROM generate_series ( to_timestamp( '2020-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ), to_timestamp( '2020-01-02 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ), '1 hours' ) AS t; time --------------------- 2020-01-01 00:00:00 2020-01-01 01:00:00 2020-01-01 02:00:00 2020-01-01 03:00:00 2020-01-01 04:00:00 2020-01-01 05:00:00 2020-01-01 06:00:00 2020-01-01 07:00:00 2020-01-01 08:00:00 2020-01-01 09:00:00 2020-01-01 10:00:00 2020-01-01 11:00:00 2020-01-01 12:00:00 2020-01-01 13:00:00 2020-01-01 14:00:00 2020-01-01 15:00:00 2020-01-01 16:00:00 2020-01-01 17:00:00 2020-01-01 18:00:00 2020-01-01 19:00:00 2020-01-01 20:00:00 2020-01-01 21:00:00 2020-01-01 22:00:00 2020-01-01 23:00:00 2020-01-02 00:00:00 (25 rows) |
根据上面的语句还可以产生按分钟、按秒的语句,写法如下
--按分钟产生连续时间数据 SELECT to_char( t, 'yyyy-mm-dd hh24:mi:ss' ) AS TIME FROM generate_series ( to_timestamp( '2020-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ), to_timestamp( '2020-01-02 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ), '1 minutes' ) AS t; --按秒产生连续时间数据 SELECT to_char( t, 'yyyy-mm-dd hh24:mi:ss' ) AS TIME FROM generate_series ( to_timestamp( '2020-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ), to_timestamp( '2020-01-02 00:00:00', 'yyyy-mm-dd hh24:mi:ss' ), '1 seconds' ) AS t;
|
如果需要产生间隔的时间数据,只需要修改generate_series的第三个参数,如果需要间隔一小时的时间数据,将“1 hours”修改为“2 hours”即可。
更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContentHighgo/7b72149104998b71