programing

Oracle : 날짜를 시간 단위로만 비교합니다.

subpage 2023. 10. 26. 21:03
반응형

Oracle : 날짜를 시간 단위로만 비교합니다.

우리는 DATE 란이 있는 테이블이 있습니다.

날짜에 상관없이 d열이 일부 값보다 크거나 낮은 행을 모두 받고 싶습니다.

예를들면

|       d          |
-------------------
|2009/11/1 15:55:23|
--------------------
|2009/11/2 15:55:23|
--------------------
|2009/11/3 15:55:23|
--------------------
|2009/11/3 17:55:23|
--------------------

예를 들어, 모든 레코드를 오후 5시 이후에 표시하려면:

select d 
 from my_table 
where extract( hour from d ) > TO_DATE ('17:00:00','HH24:MI:SS') 

이것은 오직 하나의 레코드만 반환해야 합니다.

|2009/11/3 17:55:23|

이것이 가장 좋은 방법인지는 모르겠지만 추출 기능에 오류가 발생합니다.

ORA-30076: invalid extract field for extract source 
Cause: The extract source does not contain the specified extract field.

더 좋은 방법이 없을까요?그 오류는 어떻게 된 겁니까?내가 찾은 모든 예와 같이 sysdate에만 사용할 수 있는 추출물?

미리 감사드립니다.

이건 어때?

select d 
from my_table
where to_char(d,'HH24') > '16';

현재 테스트할 Oracle 데이터베이스는 없지만 다음과 같은 기능이 있어야 한다고 생각합니다.

SELECT *
  FROM MY_TABLE t
  WHERE EXTRACT(HOUR FROM CAST(t.D AS TIMESTAMP)) > 16;

그런데 이 페이지에는 HOUR가 DATE에서 유효한 필드라고 되어있는데 CAST가 왜 필요한지 이해가 안가요.

나누어서 즐겨요.

시도해 보기:

select d from my_table 
where (d-trunc(d)) > 16/24; 

언급URL : https://stackoverflow.com/questions/2343056/oracle-compare-dates-only-by-the-hour

반응형