我试图在给定的特定时间间隔(> =星期一上午7点和<星期二<7AM,> =星期二7 AM和星期三 我可以使用下面的查询来统计每天有多少条记录,但是我很确定它只统计同一天中午12点至晚上11:59之间的记录。 结果: 我也尝试通过将INTERVAL添加到我的columned_at COLUMN中24小时来尝试使用INTERVAL,但是我无法使其工作。 样本数据: 预期结果:TABLE Name: test_table
|---------------------|------------------|-------------------------|
| id | name | occured_at |
|---------------------|------------------|-------------------------|
SELECT COUNT(id),name AS ord_name, date_trunc('day', occured_at) AS ord_date
FROM test_table
GROUP BY ord_name, ord_date
ORDER BY ord_date
|count|ord_name| ord_date |
|-----|--------|----------------------|
| 20 | ord1 |2019-02-01 00:00:00+00|
| 25 | ord1 |2019-02-02 00:00:00+00|
| 30 | ord1 |2019-02-03 00:00:00+00|
| 15 | ord1 |2019-02-04 00:00:00+00|
SELECT COUNT(id),name AS ord_name, date_trunc('day', occured_at) AS ord_date
FROM test_table
WHERE ord_date::time >= '07:00:00' + INTERVAL '24 hour'
GROUP BY ord_name, ord_date
ORDER BY ord_date
| id | name | occured_at |
|-----|--------|----------------------|
| 1 | ord1 |2019-02-01 07:00:00+00|
| 2 | ord1 |2019-02-01 12:30:00+00|
| 3 | ord1 |2019-02-02 06:58:00+00|
| 4 | ord1 |2019-02-02 07:01:00+00|
| 5 | ord1 |2019-02-03 07:00:00+00|
| 6 | ord1 |2019-02-04 06:59:00+00|
|count |ord_name |ord_date |
|------|---------|----------|
| 3 | ord1 |2019-02-01|
| 1 | ord1 |2019-02-02|
| 2 | ord1 |2019-02-03|
答案 0 :(得分:2)
由于在这种情况下,您的一天从逻辑上说是从早上7点开始,因此您可以从日期中减去7小时来重新定义日期。这样,恰好是早上7点的日期似乎是该实际日期的开始。
SELECT
COUNT(id),
name AS ord_name,
date_trunc('day', occured_at - interval '7 hour') AS ord_date
FROM test_table
GROUP BY
name,
date_trunc('day', occured_at - interval '7 hour')
ORDER BY
ord_date;