Oracle에서 날짜 부분만을 기준으로 두 DATE 값을 비교하는 방법은 무엇입니까?
다음 쿼리로 지난 30일 동안의 카운트를 파악하려고 합니다.
SELECT date_occured, COUNT(*) FROM problem
WHERE date_occured >= (CURRENT_DATE - 30)
GROUP BY date_occured;
//date_occured field is of type DATE.
기본적으로 나의 쿼리에서 나는 조건에서 날짜 부분만 비교하려고 합니다.date_occured >= (CURRENT_DATE - 30)
, 시간도 비교가 되는 것 같아요.
다음과 같이 TRUNK를 시도했습니다.
TRUNC(date_occured) >= TRUNC(CURRENT_DATE - 30)
그러나 쿼리를 실행하면 반환되지 않습니다.
저도 노력했습니다.
SELECT date_occured, COUNT(*) FROM problem
GROUP BY date_occured
HAVING TRUNC(date_occured) >= TRUNC(CURRENT_DATE - 30);
다시는 돌아오지 않습니다.
Oracle에서 두 DATE 값 중 날짜 부분만 비교하려면 어떻게 해야 합니까?
이 조건에서는 오른쪽만 잘라내면 됩니다.
WHERE date_occured >= TRUNC(CURRENT_DATE - 30)
그 이유는 TRUNC(DATE_occured)가 TRUNC(CURRENT_DATE - 30)보다 늦으면 TRUNC(DATE_occured) 이후의 임의의 시점도 TRUNC(CURRENT_DATE - 30)보다 늦어질 수밖에 없기 때문입니다.
date_graphics >= TRUNK(date_occured) (생각해 보세요) 라는 것은 분명히 항상 사실입니다.
논리는 A >= B, B >= C이면 A >= C를 따른다고 합니다.
이제 대체할 수:
- A : date_occured
- B : TRUNK(date_occured)
- C : TRUNK (CURRENT_DATE - 30)
선택한 부분도 잘라내야 할 것 같습니다.
SELECT TRUNC(date_occured) AS short_date_occured, COUNT(*)
FROM problem
WHERE date_occured >= trunc(SYSDATE- 30)
GROUP BY short_date_occured;
SYSDATE vs CURRENT_DATE를 사용해 보십시오.SysDate는 서버의 로컬 시간을 사용하며, CURRENT_DATE는 클라이언트 연결의 로컬 시간에 있는 서버의 현재 날짜/시간을 반환합니다.
나는 토니가 옳다는 것과 당신이 정말로 원하는 것을 의심하는 경향이 있습니다.TRUNC
그 표현의 우변
당신이 원한다면,TRUNC
식의 양쪽 모두에서 성능 문제가 발생하므로 함수 기반 인덱스가 필요할 수 있습니다.
CREATE INDEX idx_problem_trunc_dt_occured
ON problem( trunc( date_occurred ) );
그러면 원래 쿼리에서 함수 기반 인덱스를 사용할 수 있습니다.
지수 친화적 접근법은 다음과 같습니다.
Oracle Native MONTH_BETWEEN 함수를 사용하는 경우 열에 함수를 사용할 필요가 없습니다.
개월 수에 따라 차이를 반환합니다.요일 또한 차이로 주어지지만 정밀도 면에서 BETWEEN 절을 사용하는 것을 선호했습니다.
WHERE MONTHS_BETWEEN(date_occured, CURRENT_DATE - 30) BETWEEN 0 AND 1
언급URL : https://stackoverflow.com/questions/7433363/how-to-compare-two-date-values-based-only-on-date-part-in-oracle
'IT' 카테고리의 다른 글
각도 6 : http 통화 중 응답 유형을 텍스트로 설정하는 방법 (0) | 2023.09.10 |
---|---|
팬더의 데이터 프레임에서 숫자가 아닌 행을 찾습니까? (0) | 2023.09.10 |
phpmyadmin 서버 유형에서 중복 레코드 찾기:마리아DB (0) | 2023.09.10 |
멀티 테넌트 지원을 위한 Sequelize에서 데이터베이스 동적 정의 잘못된 쿼리 구문 반환 (0) | 2023.09.10 |
MariaDB 기존 열의 새 열 데이터에 삽입 (0) | 2023.09.10 |