一、每半天
如果有张表log_bus_runinfo里有一个created_date是timestamp类型,如何统计12点前的数据?
在 PostgreSQL 中,您可以使用 DATE_TRUNC
函数和 WHERE
子句来统计特定时间范围内的数据。以下是一个查询例子,用于统计 log_bus_runinfo
表中创建日期 created_date
早于当天中午 12 点的记录数:
SELECT COUNT(*)
FROM log_bus_runinfo
WHERE DATE_TRUNC('day', created_date) = current_date AND created_date < current_date + interval '12 hours'
上述查询会使用 DATE_TRUNC
函数将 created_date
字段截断为该天(时间部分被删除),之后使用 WHERE
子句选择操作当天(而不是整个历史)的记录,并且创建日期小于这一天中午 12 点(即 current_date + interval '12 hours'
)。
同样,如果处理后半天的SQL:
SELECT COUNT(*)
FROM log_bus_runinfo
WHERE DATE_TRUNC('day', created_date) = current_date
AND created_date >= current_date + interval '12 hours'
二、每周
如果有张里程表count_mileage,字段count_mileage表示每天的里程数,如何统计上一周的公里数?
SELECT
created_date::DATE-(extract(isodow from created_date::TIMESTAMP)-1||'day')::interval countWeek,
sum(mileage_count) mileage
from count_mileage
GROUP BY created_date::DATE-(extract(isodow from created_date::TIMESTAMP)-1||'day')::"interval"
order by countWeek
limit 1
它用于从count_mileage表中检索日期创建和总路程,并根据学院id和每周计数对其进行分组。以下是逐行的语法分析:
select created_date::date-(extract(isodow from created_date::timestamp)-1||'day')::interval countweek,
: 选择c