在pg数据库中从开始时间和结束时间里每间隔两个小时取一次表里的符合时间范围的数据的数据并输出时间间隔两端的数据的sql语句
时间: 2024-10-16 08:13:47 浏览: 16
一个基于 bitcask 模型的 NoSQL 数据库,支持多种数据结构 .zip
在PostgreSQL中,你可以使用`INTERVAL`关键字以及`BETWEEN`、`OVERLAPS` 或者 `AT TIME ZONE` 功能来实现这个需求。这里假设有一个名为`your_table`的表,其中有一个`timestamp_column`的时间戳字段,你需要获取从`start_time`到`end_time`之间每两小时的时间点数据。这是一个可能的SQL查询示例:
```sql
WITH time_intervals AS (
SELECT start_time,
add_hours(start_time, INTERVAL '0' HOUR) - INTERVAL '15 MINUTE' OVERLAP AS interval_start,
add_hours(start_time, INTERVAL '2' HOUR) OVERLAP AS interval_end
FROM your_table
WHERE timestamp_column BETWEEN start_time AND end_time
)
SELECT * FROM time_intervals
WHERE timestamp_column = interval_start OR timestamp_column = interval_end;
```
这个查询首先创建了一个公共表表达式(`CTE`) `time_intervals`,计算出每两个小时内的时间段起点(`interval_start`)和终点(`interval_end`)。然后,主查询选择在这个时间段内的数据,即时间点等于起始时间或结束时间。
阅读全文