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
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 ?