[Oracle] 오라클 두 날짜 사이 일수 계산 (일, 시, 분 표시)

오라클 SQL에서 두 날짜 사이의 차이를 계산할 때는 빼기(-) 연산자를 사용하여 두 날짜를 빼 주면 된다. 날짜에 시간이 포함되어 있다면 소수점이 포함된 일수로 반환될 수 있으므로 주의해야 한다. 이를 해결하기 위해 TRUNC 함수를 사용하여 날짜의 시간을 미리 제거하거나, 소수점을 반올림하거나 제거하는 방법이 필요하다. 두 날짜의 차이를 일수뿐만 아니라 시, 분, 초까지 계산하려면 적절한 함수와 계산 공식을 사용하면 된다. 아래의 예시 쿼리를 참고하면 된다.

 

목차

 

두 날짜 사이 일수 계산하기

SELECT TO_DATE('2024-06-03', 'YYYY-MM-DD')
       - TO_DATE('2024-06-01', 'YYYY-MM-DD') AS date_diff
  FROM dual

 

 

오라클에서는 날짜에서 날짜를 빼면 차이가 일수로 반환된다. 날짜에 시간까지 포함되어 있다면, 시간까지 계산되어 반환되므로 원하는 일수가 반환되지 않을 수 있으니 주의해야 한다.

 

 일수 계산시 시간이 포함되어 있을 경우

SELECT date_diff
     , TRUNC(date_diff)
  FROM (
         SELECT TO_DATE('2024-06-03 18:45:30', 'YYYY-MM-DD HH24:MI:SS')
                - TO_DATE('2024-06-01 14:30:00', 'YYYY-MM-DD HH24:MI:SS') AS date_diff
           FROM dual
       )

 

 

연산할 날짜에 시간이 포함되어 있다면, 계산된 일수에 소수점이 생길 수 있다. 소수점이 있는 일수에 TRUNC 함수를 사용하여 소수점을 제거하면 일수만 얻을 수 있지만, 상황에 따라서 ROUND 함수를 사용하여 반올림하여 사용해야 원하는 일수를 얻을 수 있는 경우도 있다. (예, TRUNC(date_diff), ROUND(date_diff) )

 

소수점 값이 필요 없다면 일수를 계산하기 이전에 TRUNC 함수를 사용하여 날짜의 시간을 미리 제거하는 것이 좋다.

 

SELECT TRUNC(TO_DATE('2024-06-03 18:45:30', 'YYYY-MM-DD HH24:MI:SS'))
       - TRUNC(TO_DATE('2024-06-01 14:30:00', 'YYYY-MM-DD HH24:MI:SS')) AS date_diff
  FROM dual

 

 

일수 계산 시 시간까지 고려하여 계산할 필요가 없을 경우 TRUNC 함수를 사용하여 날짜의 시간을 제거하고 계산하면 원하는 일수를 얻을 수 있다.

 

일수 뿐만 아니라 시, 분, 초 까지 계산하기

SELECT TRUNC(date_diff)                         AS days
     , TRUNC(MOD(date_diff * 24, 24))           AS hours
     , TRUNC(MOD(date_diff * 24 * 60, 60))      AS minutes
     , TRUNC(MOD(date_diff * 24 * 60 * 60, 60)) AS seconds
  FROM (
         SELECT TO_DATE('2024-06-03 18:45:30', 'YYYY-MM-DD HH24:MI:SS')
                - TO_DATE('2024-06-01 14:30:00', 'YYYY-MM-DD HH24:MI:SS') AS date_diff
           FROM dual
       )

 

 

두 날짜의 차이를 일수뿐만 아니라 시, 분, 초까지 계산해야 한다면, 위의 계산 공식으로 계산할 수 있다.

 

TRUNC(date_diff) AS days는 날짜 차이의 정수 부분을 추출하여 일수로 반환한다.
TRUNC(MOD( date_diff * 24, 24)) AS hours는 날짜 차이를 시간 단위로 변환한 후, 24로 나눈 나머지를 추출하여 시간을 계산한다.
TRUNC(MOD( date_diff * 24 * 60, 60)) AS minutes는 날짜 차이를 분 단위로 변환한 후, 60으로 나눈 나머지를 추출하여 분을 계산한다.
TRUNC(MOD( date_diff * 24 * 60 * 60, 60)) AS seconds는 날짜 차이를 초 단위로 변환한 후, 60으로 나눈 나머지를 추출하여 초를 계산한다.

 

 

[Oracle] 오라클 날짜, 시간 차이 계산 방법 (DATEDIFF)

오라클에서 날짜 및 시간의 차이를 계산하기 위해서는 수치를 계산하듯 종료일자에서 시작일자를 빼주면 된다. MSSQL에서는 DATEDIFF 함수를 사용하지만 오라클에서는 별도의 함수는 없다. 날짜 차

gent.tistory.com

 

[Oracle] 오라클 시간, 분, 초 더하기 빼기 (INTERVAL)

오라클 날짜타입의 값에서 시간을 빼거나 더하기 위해서는, 기본으로 제공해주는 오라클 함수가 없기 때문에 별도의 연산작업을 해줘야 한다. 시간, 분, 초를 더하기나 빼기 위해서는 일반적으

gent.tistory.com

 

[Oracle] TRUNC 함수 사용법 (시간, 소수점 절사)

오라클에서 소수점을 절사(버림)하거나 날짜의 시간을 절사 하기 위해서는 TRUNC 함수를 사용한다. 소수점, 시간 등 단순한 절사 방법 외에 TRUNC 함수의 옵셥을 사용하여 다양한 절사 방법이 있으

gent.tistory.com

 

 

댓글

Designed by JB FACTORY