【发布时间】:2019-11-22 19:17:56
【问题描述】:
我有一个包含统计信息的表格,并想计算 日均访问量
基本上我想做这样的事情
select sum(visit) / (now() - '2019-11-21') from statistics;
我想去哪里
(now() - '2019-11-21')
转换为实数的天数,例如1.5
在 postgresql 中可以做到这样的事情吗?
【问题讨论】:
标签: postgresql date time
我有一个包含统计信息的表格,并想计算 日均访问量
基本上我想做这样的事情
select sum(visit) / (now() - '2019-11-21') from statistics;
我想去哪里
(now() - '2019-11-21')
转换为实数的天数,例如1.5
在 postgresql 中可以做到这样的事情吗?
【问题讨论】:
标签: postgresql date time
你可以使用EXTRACT得到你想要的:
postgres=# select now(), 24.0/EXTRACT(hours FROM (now() - '2019-11-21'));
now | ?column?
-------------------------------+-------------------
2019-11-22 19:28:32.254199+00 | 1.263157894736842
(1 row)
【讨论】:
要获得真正准确的结果,您可以将两个日期都转换为纪元值(即自 1970 年 1 月 1 日以来的秒数),然后减去它们。然后,您可以将结果除以 60(每分钟的秒数、60(每小时的分钟数)和 24(每天的小时数)。
像这样:
(extract(epoch from now()) - extract (epoch from timestamp '2019-11-21') ) / 60 / 60 / 24
select
now(),
(extract(epoch from now()) - extract (epoch from timestamp '2019-11-21') )
/ 60 / 60 / 24 date_diff
现在|日期差异
:---------------------------- | :----------------
2019-11-25 00:26:03.006079+00 | 4.018090348136094
【讨论】: