Background Image
조회 수 17829 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
179 기타 CUBRID 설치 서버의 OS bit 확인하는 방법과 CUBRID bit 확인 방법. file seongjoon 2009.12.15 18961
178 응용개발 CUBRID에서 제약조건(PK,FK,UNIQUE),index 설정 시 주의 사항 cubebridge 2009.11.26 18886
177 응용개발 MySQL의 Blob타입을 CUBRID로 변환하기 cubebridge 2009.11.18 18856
176 운영관리 데이터베이스 볼륨 자동 증가 설정 남재우 2009.04.01 18801
175 응용개발 그루비로 큐브리드 함수(or 프로시저) 만들기 by 행복개발자(cyberuls) 시난 2009.07.14 18753
174 기타 glo 사용시 loaddb 주의 사항 웁쓰 2009.12.31 18650
173 응용개발 cubrid_fetch_all() php 함수로 만들어 사용하기 file 시난 2009.06.30 18619
172 운영관리 큐브리드와 hostname 관계 정만영 2009.06.25 18583
171 질의작성 예제를 이용한 중복데이터 삭제 janus 2009.12.02 18541
170 운영관리 CUBRID2008 파티션 테이블 삭제 시 인덱스 drop 안 되는 현상 예시 cubebridge 2009.12.12 18461
169 기타 utf-8 데이터 like 검색 시 설정 손승일 2009.05.12 18453
168 질의작성 데이터 필드의 타입 변경하기 admin 2008.11.21 18420
167 응용개발 패키지 형태로 생성된 JAVA class를 JAVA SP에서 사용하기 손승일 2010.02.26 18375
166 CUBRID 매니저 CUBRID와 CUBRID Web Manager설치, 그리고 XE의설치 및 연동까지 file cubebridge 2012.11.13 18099
165 기타 ODBC 드라이버만 따로 배포하는 방법 1 file 손승일 2009.06.26 18060
164 응용개발 Java Data Type의 CUBRID Data Type으로의 변경 Tip cubebridge 2009.06.16 18032
163 응용개발 JAVA SP를 통해 다른 데이터베이스 연결하는 경우 잊지 말자. 손승일 2009.12.16 17975
162 CUBRID 매니저 CUBRID Manager에서 character set 변경하기[R2.0] file seongjoon 2009.10.29 17961
161 CUBRID 매니저 java.lang.OutOfMemoryError 처리 방법 file janus 2009.04.13 17880
» 질의작성 문자(char, varchar)로 설계한 날짜데이타 검증하기 권호일 2012.04.27 17829
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