在pg数据库中从开始时间和结束时间里每间隔两个小时取一次表里的符合时间范围的数据的数据的sql语句
时间: 2024-10-16 20:13:50 浏览: 18
在PostgreSQL数据库中,你可以使用INTERVAL和ROW_NUMBER()窗口函数来实现这个需求。假设你的表名为`your_table`,有两列分别是`start_time`和`end_time`,都是时间戳类型的。以下是SQL查询示例:
```sql
WITH time_intervals AS (
SELECT
start_time,
end_time,
ROW_NUMBER() OVER (ORDER BY start_time) as row_num,
EXTRACT(EPOCH FROM (end_time - start_time)) / 60.0 / 60.0 AS interval_hours
FROM your_table
WHERE start_time BETWEEN '开始时间' AND '结束时间'
)
SELECT *
FROM time_intervals
WHERE MOD(row_num, INTERVAL '2 hours') = 0;
```
这里,我们首先创建了一个名为`time_intervals`的CTE(公共表表达式),计算了每个时间段的小时数,并按照`start_time`排序。然后在主查询中,使用`MOD`函数找到每两个小时内的时间点。
请注意将`'开始时间'`和`'结束时间'`替换为你实际的时间值。如果你的时间是以特定格式存储的,例如`YYYY-MM-DD HH:MI:SS`,你需要先转换为PostgreSQL可以理解的时间戳格式。
阅读全文