오라클 19c TimeStamp로 두 기간 사이 데이터 검색 방법 질문드립니다. 0 2 1,994

by 꿈꾸는DB뉴비 [SQL Query] #Oracle #Oracle19c #TimeStamp #기간조회 [2021.12.22 12:32:34]


안녕하세요.
오라클 DB를 처음써보는 뉴비입니다. 타임스탬프로하는 기간검색이 잘 안돼서 질문드립니다..
구글 검색해도 안나오는 것 같은데, 제가 잘 못하는건지 한 번만 도움 부탁드립니다.

테이블 : COMMLOG
칼럼 : COMMDATE(DATE), COMMTIMESTAMP(TIMESTAMP),OriginData(varchar2)

일단 타임스탬프로 기간검색이 안돼서, 일단 임시로 DATE 칼럼을 추가 생성해서 이중으로 시간을 저장하고 있습니다.

*정상작동
현재 사용 쿼리 : SELECT * FROM COMMLOG WHERE COMMDATE BETWEEN to_date ('2021-12-22 11:00:00','YYYY-MM-DD HH24:MI:SS') AND to_date ('2021-12-22 12:00:00','YYYY-MM-DD HH24:MI:SS') ORDER BY COMMDATE ASC

* 테스트 해본 쿼리 
* ORA-01821 : 날짜형식 에러
SELECT * FROM COMMLOG WHERE COMMTIMESTAMP BETWEEN to_timestamp('2021-12-22 11:00:00.111','YYYY-MM-DD HH24:MI:SSfff') AND to_timestamp('2021-12-22 12:00:00.111','YYYY-MM-DD HH24:MI:SSfff') ORDER BY COMMDATE ASC;

SELECT * FROM COMMLOG WHERE 
COMMTIMESTAMP >= to_timestamp('2021-12-22 11:00:00.111','YYYY-MM-DD HH24:MI:SS.fff') 
AND COMMTIMESTAMP <= to_timestamp('2021-12-22 12:00:00.111','YYYY-MM-DD HH24:MI:SS.fff') ORDER BY COMMDATE ASC;

대략 이런식으로 테스트 해봤습니다. 좋은 방법 있으시면 답변 부탁드립니다.

by 마농 [2021.12.22 12:53:50]

1. fff 가 아니라
- ff 또는
- ff3 사용하시면 됩니다.
2. 그런데 검색 조건이 이상한게..
- 조건 밀리초가 111 맞나요? 보통 검색할 때 000 검색 할 듯 한데요?
- 000 이라면 그냥 아예 빼면 됩니다. 필요한 부분까지만 사용.
- TO_TIMESTAMP('2021-12-22 11', 'yyyy-mm-dd hh24')
3. 또한 종료 조건도 정각 기준이라면
- 보통 11시부터 12시 사이라고 하면
- 12시 정각은 조건에서 빠지는게 맞지 않을까요?
- 종료시간은 이퀄(=)이 안들어 가는게 맞을 듯 한데요?


by 꿈꾸는DB뉴비 [2021.12.22 13:04:58]

정말 감사합니다. 덕분에 해결했습니다. ^^7

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입