development

postgres를 사용하여 간격을 여러 시간으로 어떻게 변환합니까?

big-blog 2020. 6. 30. 08:01
반응형

postgres를 사용하여 간격을 여러 시간으로 어떻게 변환합니까?


같은 간격이 있다고 가정 해보십시오.

4 days 10:00:00

postgres에서. 이것을 여러 시간으로 변환하는 방법 (이 경우 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


         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

반응형