programing

포스트그레스를 사용하여 간격을 몇 시간으로 변환하려면 어떻게 해야 합니까?

i4 2023. 5. 26. 20:43
반응형

포스트그레스를 사용하여 간격을 몇 시간으로 변환하려면 어떻게 해야 합니까?

나에게 이런 간격이 있다고 말합니다.

4 days 10:00:00

우편으로어떻게 시간으로 변환합니까(이 경우 106시간)?기능이 있나요, 아니면 제가 총알을 물어뜯고 해야 하나요?

extract(days, my_interval) * 24 + extract(hours, my_interval)

가장 쉬운 방법은 다음과 같습니다.

SELECT EXTRACT(epoch FROM my_interval)/3600

정수(일 수)를 원하는 경우:

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

일 수를 구하는 가장 쉬운 방법은 다음과 같습니다.

SELECT EXTRACT(DAY FROM NOW() - '2014-08-02 08:10:56');

제가 알기로는 다음과 같이 반송될 것으로 알고 있습니다.

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));

::int변환은 반올림의 원리를 따릅니다.반올림과 같은 다른 결과를 원하는 경우 다음과 같은 수학 함수를 사용할 수 있습니다.floor.

테이블 필드를 변환하는 경우:

  1. 초를 포함하도록 필드를 정의합니다.

     CREATE TABLE IF NOT EXISTS test (
         ...
         field        INTERVAL SECOND(0)
     );
    
  2. 값을 추출합니다.그렇지 않으면 간격이 크면 불쾌한 놀라움을 느낄 수 있다는 것을 기억하십시오.

    EXTRACT(EPOCH FROM field)::int

간격을 추가한 후 결과를 날짜 유형으로만 표시하려면 다음을 시도해야 합니다.

선택(current_date + interval 'x day')::날짜;

장황하지 않게 하는 기능extract epoch안가는 곳이 없어요.필요한 시간(초)을 반환합니다.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 $$;

사용.

int_interval('1 day')

저는 Postgre와 함께 일하고 있습니다.SQL 11, 그리고 나는 두 개의 다른 타임스탬프 사이의 시간을 구하는 함수를 만들었습니다.

create function analysis.calcHours(datetime1 timestamp, datetime2 timestamp)
    returns integer
    language plpgsql as $$
    declare
        diff interval;
    begin
        diff = datetime2 - datetime1;
        return (abs(extract(days from diff))*24 + abs(extract(hours from diff)))::integer;
    end; $$;
         select date 'now()' - date '1955-12-15';

다음은 총 일수를 계산하는 단순 쿼리입니다.

언급URL : https://stackoverflow.com/questions/952493/how-do-i-convert-an-interval-into-a-number-of-hours-with-postgres

반응형