SELECT * FROM your_table WHERE (your_time_column >= time '17:00' OR your_time_column < time '01:30') AND date_trunc('day', your_date_column) >= date_trunc('day', current_date - interval '1 day') + interval '17 hours' AND date_trunc('day', your_date_column) <= date_trunc('day', current_date) + interval '1 day' + interval '1 hour' + interval '30 minutes';
时间: 2024-01-04 07:02:07 浏览: 123
order_by_、group_by_、having的用法区别.doc
这是之前提供的查询代码,用于在 PostgreSQL 中筛选出从当天的17:00到次日的01:30分之间的数据:
```sql
SELECT *
FROM your_table
WHERE (your_time_column >= time '17:00' OR your_time_column < time '01:30')
AND date_trunc('day', your_date_column) >= date_trunc('day', current_date - interval '1 day') + interval '17 hours'
AND date_trunc('day', your_date_column) <= date_trunc('day', current_date) + interval '1 day' + interval '1 hour' + interval '30 minutes';
```
请确保将 `your_table` 替换为你要查询的表名,`your_time_column` 替换为包含时间的列名,`your_date_column` 替换为包含日期的列名。
该查询使用了三个条件来筛选数据:
1. `(your_time_column >= time '17:00' OR your_time_column < time '01:30')` 条件筛选出时间在17:00到次日01:30之间的数据。
2. `date_trunc('day', your_date_column) >= date_trunc('day', current_date - interval '1 day') + interval '17 hours'` 和 `date_trunc('day', your_date_column) <= date_trunc('day', current_date) + interval '1 day' + interval '1 hour' + interval '30 minutes'` 条件用于确保日期在正确的范围内。
- 第一个条件 `date_trunc('day', your_date_column) >= date_trunc('day', current_date - interval '1 day') + interval '17 hours'` 筛选出日期晚于或等于前一天加上17小时的数据。
- 第二个条件 `date_trunc('day', your_date_column) <= date_trunc('day', current_date) + interval '1 day' + interval '1 hour' + interval '30 minutes'` 筛选出日期早于或等于当天加上1天1小时30分钟的数据。
希望这次能够正确地查询出符合条件的数据。如果还有其他问题,请随时提问。
阅读全文