반응형
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
반응형
'programing' 카테고리의 다른 글
mongo 엔진에서 하나()를 찾고 하나()를 찾습니다. (0) | 2023.07.11 |
---|---|
NppExec 플러그인을 사용하여 메모장++ 내에서 C 파일을 컴파일하고 실행하는 방법은 무엇입니까? (0) | 2023.07.11 |
git add * (주기) 대 git add. (주기) (0) | 2023.07.11 |
SQL Server가 없는 경우 사용하시겠습니까? (0) | 2023.07.11 |
Oracle Date TO_CHAR('Month DD, YYY')에 추가 공간이 있습니다. (0) | 2023.07.11 |