programing

Oracle : 두 날짜를 빼서 분 단위로 결과를 얻는 방법

instargram 2023. 7. 11. 21:28
반응형

Oracle : 두 날짜를 빼서 분 단위로 결과를 얻는 방법

날짜에서 분을 얻기 위해 이 함수를 작성했는데, 두 날짜 사이에 분을 얻을 수 없습니다. 어떻게 해야 하나요?

FUNCTION get_minute(p_date DATE)
RETURN NUMBER
IS
BEGIN
    IF p_date IS NOT NULL THEN
        return  EXTRACT(MINUTE FROM TO_TIMESTAMP(to_char(p_date,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS'));
    ELSE
        RETURN 0;
    END IF;
END get_minute;

Oracle에서 두 날짜를 빼면 두 값 사이의 일 가 표시됩니다.따라서 몇 분 안에 결과를 얻기 위해 곱셈만 하면 됩니다.

SELECT (date2 - date1) * 24 * 60 AS minutesBetween
FROM ...

(날짜 대신) 두 개의 타임스탬프를 기준으로 지정하려는 사용자를 위해 유사한 솔루션이 있습니다.

SELECT ( CAST( date2 AS DATE ) - CAST( date1 AS DATE ) ) * 1440 AS minutesInBetween
FROM ...

또는

SELECT ( CAST( date2 AS DATE ) - CAST( date1 AS DATE ) ) * 86400 AS secondsInBetween
FROM ...

두 개의 타임스탬프를 빼도록 함수를 조정할 수 있다고 생각합니다.

return  EXTRACT(MINUTE FROM 
  TO_TIMESTAMP(to_char(p_date1,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS')
-
  TO_TIMESTAMP(to_char(p_date2,'DD-MON-YYYY HH:MI:SS'),'DD-MON-YYYY HH24:MI:SS')
);

제 생각에 당신은 그것을 단순화할 수 있을 것 같습니다.CAST(p_date as TIMESTAMP).

return  EXTRACT(MINUTE FROM cast(p_date1 as TIMESTAMP) - cast(p_date2 as TIMESTAMP));

날짜와 타임스탬프는 화면에서 보는 것이 아니라 Oracle 내부의 크고 추악한 숫자입니다. 이를 읽는 방법을 알려줄 필요가 없습니다.또한 타임스탬프에는 시간대가 정의될 수 있습니다. 이 경우는 아닙니다.

이런 식으로 처리할 수 있습니다.

select to_number(to_char(sysdate,'MI')) - to_number(to_char(*YOUR_DATA_VALUE*,'MI')),max(exp_time)  from ...

또는 시간을 원하는 경우 MI를 변경합니다.

select to_number(to_char(sysdate,'HH24')) - to_number(to_char(*YOUR_DATA_VALUE*,'HH24')),max(exp_time)  from ...

다른 사람들은 저를 위해 일하지 않습니다.행운을 빌어요.

언급URL : https://stackoverflow.com/questions/13408819/oracle-how-to-subtract-two-dates-and-get-minutes-of-the-result

반응형