Postgresql时间处理技巧,每半天,每周,每月和每5分钟统计

本文介绍了在PostgreSQL中处理时间数据的方法,包括统计12点前的记录、上周公里数、每月里程、每5分钟数据分段以及近七日警告数据。通过示例SQL查询,详细解析了每种情况下的时间操作和聚合函数的应用。
摘要由CSDN通过智能技术生成

一、每半天

如果有张表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
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值