我如何将一个间隔转换为多个小时?

问题描述 投票:0回答:8

4 days 10:00:00

postgres。如何将其转换为多个小时(在这种情况下为106?)是否有功能,还是我应该咬着子弹并做类似的事情。
extract(days, my_interval) * 24 + extract(hours, my_interval)

最简单的方法是:
SELECT EXTRACT(epoch FROM my_interval)/3600
datetime postgresql intervals
8个回答
484
投票

如果您想要整数,即天数:
SELECT (EXTRACT(epoch FROM (SELECT (NOW() - '2014-08-02 08:10:56')))/86400)::int

40
投票

获得最简单的天数是:
SELECT EXTRACT(DAY FROM NOW() - '2014-08-02 08:10:56');

11
投票
据我所知,它将返回与:

SELECT (EXTRACT(epoch FROM (SELECT (NOW() - '2014-08-02 08:10:56')))/86400)::int;
    

select floor((date_part('epoch', order_time - '2016-09-05 00:00:00') / 3600)), count(*) from od_a_week group by floor((date_part('epoch', order_time - '2016-09-05 00:00:00') / 3600));
conversion依遵循舍入的原则。
如果您想要不同的结果,例如舍入,则可以使用相应的数学功能,例如

4
投票
.

如果您转换表字段:

定义该字段,因此包含秒:

0
投票
floor

  1. 提取值。

    记者要投入到其他明智的情况下,一旦间隔很大,您可能会得到令人不愉快的惊喜:

     CREATE TABLE IF NOT EXISTS test (
         ...
         field        INTERVAL SECOND(0)
     );
    
  2. 函数避免在整个地方具有详细的作用。返回几秒钟,所以需要数小时需要

    EXTRACT(EPOCH FROM field)::int

  3. extract epoch

0
投票

int_interval('1 day') / 3600

    
如果您想在添加间隔之后仅在日期类型中显示结果,则应尝试此

CREATE OR REPLACE FUNCTION int_interval(interval_text text) returns INT LANGUAGE SQL IMMUTABLE as $$ SELECT EXTRACT(epoch FROM interval_text::INTERVAL)::INT $$;

我与PostgreSQL 11一起工作,我创建了一个函数,以获取时间2差异时间戳
int_interval('1 day')

0
投票

Select (current_date + interval 'x day')::date;
在这里是简单的查询,可以计算总数的总数。
    

-2
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.