登录
首页 >  Golang >  Go问答

计算 sqlx 中某个时间范围内的每日数据量

来源:stackoverflow

时间:2024-02-14 09:57:23 204浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《计算 sqlx 中某个时间范围内的每日数据量》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我的数据库表如下所示:

create table record 
(
    id         int,
    status     int,
    created_at timestamp not null default current_timestamp,
    primary key (id)
);

我想知道过去 1 天 3 小时后创建了多少条记录。

为此,我在 postgres 数据库中使用此查询http://sqlfiddle.com/#!17/7a913

select gs.ts, count(r.created_at)
from generate_series(now() - interval '24 hour', now() - interval '3 hour', interval '3 hour') gs(ts) left join
     record r 
     on r.created_at >= gs.ts and
        r.created_at < gs.ts + interval '3 hour'
group by gs.ts
order by gs.ts;

它工作正常,返回 8 条记录,其中计数为 0,在该小时内没有记录。

但是当我在 golang grpc 中使用 sqlx 进行检查时,它仅返回仅创建记录的 1 小时记录。和 7 个未制作的区间不显示。

我的结构是

type issuecount struct {
        status            int 
        count             int64
        date              sql.nulltime `db:"due_date"`
    }

初始化响应:

res := make([]*model.issuecount, 0)

我的查询是

if err := tx.Select(&res, stmt, args...); err != nil {
        return nil, err
    }
    return res, nil

那么我可以使用 sqlx 来返回我在过去 24 小时内创建的记录(间隔为 3 小时)和 0 计数(其中未创建记录的间隔)。


正确答案


终于得到了答案,我应该在我的结构中获得 ts 值作为响应

type IssueCount struct {
        status            int 
        Count             int64
        Date              sql.NullTime `db:"due_date"`
        Ts                sql.NullTime 
    }

像这样

以上就是《计算 sqlx 中某个时间范围内的每日数据量》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>