2

SQL query

with dates as (
                select generate_series(
                   (date ('2022-10-02'))::timestamp,
                   (date ('2022-10-03'))::timestamp,
                   interval '2 hour'
                ) as dt
        ) 
        select
                d.dt::date::text || ' ' ||
                        to_char(d.dt::time,'HH24:MM:SS') || ' - ' ||
                        to_char(d.dt::time + interval '2 hour', 'HH24:MM:SS') as date_range,
                coalesce(avg(r.volt)::numeric(10,2), 0) as value, to_char(d.dt::time,'HH24:MM') as label,
                d.dt::date::text as date
        from dates d
        left join public.records r
                on r.created_at  >= d.dt and r.created_at < d.dt + interval '2 hour'
        group by
                d.dt
        order by
                d.dt
        limit 12

Code

    rows, _ := db.connection.Raw(sql, fromDate, toDate).Rows()
    defer rows.Close()
    for rows.Next() {
        var data rto.ChartResponse
        err := db.connection.ScanRows(rows, &data)
        if err != nil {
            log.Fatalf("fail to get data. %v", err)
        }

        result = append(result, data)
        // do something
    }

    return result

Output

This is example output from postman

{
    "data": [
        {
            "date_range": "2022-10-02 00:00:00 - 02:00:00",
            "value": 0,
            "label": "00:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 02:00:00 - 04:00:00",
            "value": 0,
            "label": "02:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 04:00:00 - 06:00:00",
            "value": 0,
            "label": "04:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 06:00:00 - 08:00:00",
            "value": 0,
            "label": "06:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 08:00:00 - 10:00:00",
            "value": 0,
            "label": "08:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 10:00:00 - 12:00:00",
            "value": 0,
            "label": "10:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 12:00:00 - 14:00:00",
            "value": 0,
            "label": "12:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 14:00:00 - 16:00:00",
            "value": 0,
            "label": "14:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 16:00:00 - 18:00:00",
            "value": 0,
            "label": "16:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 18:00:00 - 20:00:00",
            "value": 0,
            "label": "18:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 20:00:00 - 22:00:00",
            "value": 0,
            "label": "20:00",
            "date": "2022-10-02"
        },
        {
            "date_range": "2022-10-02 22:00:00 - 00:00:00",
            "value": 5.62,
            "label": "22:00",
            "date": "2022-10-02"
        }
    ]
}

dbeaver

This is result from beaver

result from dbeaver

Question:

I got different query result from Golang and beaver(postgresql)

I use gin and gorm

Why the query result's is not same?

Is this a bug or I have mistake in my code ?

Brits
  • 14,829
  • 2
  • 18
  • 31
evan nurandiz
  • 21
  • 1
  • 2
  • My guess (you have not provided any info on your database configuration) would be that it's a timezone issue. Try running this with a UTC range (e.g. `(date ('2022-10-02'))::timestamp at time zone 'utc'`). [DBeaver defaults](https://stackoverflow.com/q/45323552/11810946) to the timezone configured on the computer it is running on which may not match the database time zone. Please also clarify where the params `fromDate`/`toDate` are used and what their value is. – Brits Oct 02 '22 at 23:08

0 Answers0