【问题标题】:convert date difference to real in postgres在postgres中将日期差异转换为真实
【发布时间】: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


    【解决方案1】:

    你可以使用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)
    

    【讨论】:

      【解决方案2】:

      要获得真正准确的结果,您可以将两个日期都转换为纪元值(即自 1970 年 1 月 1 日以来的秒数),然后减去它们。然后,您可以将结果除以 60(每分钟的秒数、60(每小时的分钟数)和 24(每天的小时数)。

      像这样:

      (extract(epoch from now()) - extract (epoch from timestamp '2019-11-21') ) / 60 / 60 / 24
      

      Demo on DB Fiddle

      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

      【讨论】:

        猜你喜欢
        • 2019-05-26
        • 1970-01-01
        • 2021-02-26
        • 2014-03-09
        • 2021-06-18
        • 1970-01-01
        • 2023-03-17
        • 2018-11-24
        • 1970-01-01
        相关资源
        最近更新 更多