我想获得最后24小时的数据.我在postgreSQL中写了一个查询,如下所示.但我无法按照我的预期得到答案.
SELECT startdate::timestamp AS startdate,
(DATE_PART('hour',startdate::timestamp)::integer) as hrs,count(guorderid)
FROM ord_entitlement
WHERE DATE_PART('Day',CURRENT_DATE::timestamp - startdate::timestamp) < 1
AND DATE_PART('hour',startdate::timestamp) <= 24
GROUP BY hrs,startdate
ORDER BY startdate
Run Code Online (Sandbox Code Playgroud)
如果你使用CURRENT_DATE你将不会得到时间而是使用now()函数。尝试以下操作,
SELECT startdate::timestamp AS startdate,
(DATE_PART('hour',startdate::timestamp)::integer) as hrs,count(guorderid)
FROM ord_entitlement
WHERE DATE_PART('Day',now() - startdate::timestamptz) < 1
GROUP BY hrs,startdate
ORDER BY startdate
Run Code Online (Sandbox Code Playgroud)
而不是检查日期部分,做时间数学来获得间隔.使用NOW()获取时间戳.
SELECT startdate::timestamp AS startdate,
(DATE_PART('hour',startdate::timestamp)::integer) as hrs,
count(guorderid)
FROM ord_entitlement
WHERE NOW() > startdate::timestamptz
AND NOW() - startdate::timestamptz <= interval '24 hours'
GROUP BY hrs,startdate
ORDER BY startdate
Run Code Online (Sandbox Code Playgroud)
无论您的时区或夏令时如何,这都可确保您获得最后24小时. NOW() > startdate::timestamptz确保您不会意外地从未来拿起东西.
| 归档时间: |
|
| 查看次数: |
6186 次 |
| 最近记录: |