Background Image
조회 수 17822 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

○ 날짜 컬럼을 문자(char, varchar)로 설계
  문자로 설계한 날짜 컬럼에서 날짜형식으로 변경하면 쿼리 에러가 발생 함.  (예 : 20120132, 20110a03 등)

 

○ 해결방법
  - 데이터 입력시점에 정확한 날짜 데이터만 들어가도록 함
  - 기존의 오류 데이터는 사용자정의 함수를 작성하여 데이터를 찾고, 변환 함


○ 테스트 테이블생성
   - create table tmp_test(tmp_date varchar(8));

 

○ 테스트 데이터 
insert into tmp_test VALUES('20120108');
insert into tmp_test VALUES('20120109');
insert into tmp_test VALUES('20120110');
insert into tmp_test VALUES('20120111');
insert into tmp_test VALUES('20120112');
insert into tmp_test VALUES('20120113');
insert into tmp_test VALUES('20120114');
insert into tmp_test VALUES('20120115');
insert into tmp_test VALUES('20120132');


○ 오류 확인(날짜 관련 함수 사용 불가), 어떤 데이타가 오류이지 확인불가
SELECT to_date(tmp_date,'yyyymmdd')+1  from tmp_test;


○ 사용자정의 함수 작성(isdate.java)
import java.sql.*;

public class isdate{
    public static String chkDate(String strDate, String strDateFormat) throws SQLException {

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try{
            Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
            conn = DriverManager.getConnection("jdbc:CUBRID:localhost:33000:demodb:::","","");
           
            String sql="SELECT to_date('" + strDate + "', '" + strDateFormat + "')" ;
           
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);

            rs.close();
            stmt.close();
            conn.close();
            return "YES";

        } catch ( SQLException e ) {
            if ( conn != null ) conn.close();
            return "NO";
        } catch ( Exception e ) {
            return "NO";
        } finally {
            if ( conn != null ) conn.close();
        }
    }
}


○ 자바 컴파일 및 등록
 - 자바컴파일 : Javac isdate.java
 - CUBRID에 등록 : loadjava demodb isdate.class

 

○ 사용자정의 펑션 생성
create function isdate( strDate varchar, strDateFormat varchar) return string
as language java
name 'isdate.chkDate(java.lang.String, java.lang.String) return java.lang.String';

 

○ 날짜검사 테스트
call isdate('20120131', 'YYYYMMDD') ;
call isdate('20120132', 'YYYYMMDD') ;

 

select isdate(tmp_date,'YYYYMMDD'),   decode(isdate(tmp_date,'YYYYMMDD'), 'YES', tmp_date, '') as err_chk,tmp_date 
from tmp_test ;


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
199 질의작성 join update 처리방법입니다.(연관성 있는 테이블을 조인하여 처리하는 UPDATE 구문) 권호일 2012.11.30 20383
198 마이그레이션 MySQL+XE를 CUBRID+XE로 운영하기 – mysqldump파일과 CMT사용 file cubebridge 2012.11.13 23069
197 CUBRID 매니저 CUBRID와 CUBRID Web Manager설치, 그리고 XE의설치 및 연동까지 file cubebridge 2012.11.13 18097
196 응용개발 CUBRID-PHP-Driver 연동가이드 file cubebridge 2012.11.13 17135
195 마이그레이션 MySQL에서 CUBRID로 갈아탈 때 알아야 할 것 cubebridge 2012.11.13 22592
194 응용개발 오라클 to CUBRID로 마이그레이션 수행 시 주의사항 cubebridge 2012.11.12 16635
193 마이그레이션 오라클의 order by 시 first와 last 대체 사용법 file cubebridge 2012.11.12 20561
192 운영관리 CUBRID에서의 BLOB/CLOB 사용시 백업 및 복구에 대한 주의 점 cubebridge 2012.09.18 33156
191 기타 전자정부 표준프레임워크 CUBRID 사용 방법 문의 참조 cubebridge 2012.09.17 20588
190 운영관리 Windows 서버에서 [장치에 쓰기 캐싱 사용] 설정/해제에 따른 성능 차이 이용미 2012.06.30 20231
189 운영관리 데이터 입력 중 디스크 공간 부족 오류가 발생하였을 때, 복구 방법 이용미 2012.06.30 14329
188 질의작성 게시판 응용 중 조회수로 정렬하는 경우 인덱스 생성 방법 1 손승일 2012.06.23 13897
» 질의작성 문자(char, varchar)로 설계한 날짜데이타 검증하기 권호일 2012.04.27 17822
186 CUBRID 매니저 CUBRIDManager의 접속 정보 이관 file cubebridge 2012.04.14 12380
185 마이그레이션 CUBRID Migration Tookit 8.4.1 file cubebridge 2012.04.14 11079
184 운영관리 CUBRID 에서의 사용자 권한관리 방법 file cubebridge 2012.04.14 23640
183 마이그레이션 데이터베이스 마이그레이션(unloaddb & loaddb) 의 효과적인 수행방법 file cubebridge 2012.04.14 24534
182 질의작성 세부내역과 소계를 한개의 쿼리문장으로 수행하는 SQL 권호일 2012.03.31 14086
181 질의작성 한건의 데이타를 여러건으로 조회하는 쿼리입니다. 권호일 2012.03.30 9410
180 질의작성 여러건의 코드명을 한건으로 조회하는 쿼리입니다. 1 권호일 2012.03.30 10750
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales