* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, Linux 64bit 등 | |
[cubrid_rel] 수행 결과 9.3.6 | |
[도움말]-[버전정보] 확인 | |
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요 큐브리드 작업을 하다가 궁금한 사항이 생겨서 이렇게 문의 드립니다.
REGIST_DATE : 2015-11-08 00:00:00.000
기존 조건절 쿼리
WHERE TO_CHAR(REGIST_DATE, 'YYYY-MM-DD') BETWEEN #startDate# AND #endDate#
조건 컬럼에는 저렇게 형 변환을 해버리면 인덱스를 타지 않아서 속도에 문제가 생기고있어서 바꿀려고 하는데
저런식에 날짜시간 데이터 형식인경우에는 BETWEEN #startDate# AND #endDate# 이부분에 어떻게 처리를 해줘야 하는지 조금 난감해서요.
이런식으로 REGIST_DATE BETWEEN TO_DATETIME('2015-11-08 00:00:00') AND TO_DATETIME('2016-11-08 23:59:59');
처리를 하면되는건지요...
REGIST_DATE > 원본 데이터는 MS-SQL 이였고 이걸 큐브리드로 마이그레이션 툴로 이관을 했더니 모든 날짜에 뒤에 시,분,초,밀리초가 00:00:00.000 이렇게 들어가있더라고요
앞으로 저장 하는 날짜 함수는 SYSTIMESTAMP 으로 해서 저장하도록 하고있습니다.
DATETIME으로 입력된 값을 DATE 타입으로 검색하시려고 하는 것 같습니다.
WHERE REGIST_DATE BETWEEN TO_DATETIME('2015-11-01', 'YYYY-MM-DD') AND TO_DATETIME('2015-11-30', 'YYYY-MM-DD');
이런식으로 사용하시면 REGIST_DATE 컬럼을 가공하지 않고 인덱스를 사용할 수 있습니다.