database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
ㆍSybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Sybase Q&A 3965 게시물 읽기
No. 3965
datediff사용에 대한 오류 문의
작성자
황수원(sybaseholic)
작성일
2009-12-02 14:31
조회수
9,333

SELECT DATEDIFF(MONTH,'19'||SUBSTR(B.주민번호,1,6),현재일자)

   FROM 고객기본 A LEFT OUTER JOIN 고객정보 B ON A.고객번호 = B.고객번호

 WHERE A.지점코드 = '819'

     AND B.동코드 BETWEEN '111' AND '111'

     AND A.고객상태 = '정상'


위 쿼리를 실행 하는데


The following error occurred while fetching results:

Data exception - data type conversion is not possible.

First datatime-expression argument to DATEDIFF cannot

be converted into a vaild Date/Time Format,

--(dfe_Datepart.cxx 1297)

SQLCODE=-1009145, ODBC 3 State="HY000"


오류가 발생합니다.

데이타는 정상적으로 들어가 있느거 같고요. 동코드를 전체('000' AND '999')로 주면

정상적으로 조회가 됩니다.. ㅠㅠ


고수님 도움 부탁드립니다.

이 글에 대한 댓글이 총 1건 있습니다.

메시지 그대로 동코드 '111'내에 비정상적인 주민번호가 있지 않나 싶네요..

정확하게 찾아주진 않으나 isdate함수와 ISNUMERIC함수를 쓰면

대략적으로 문제가 되는 데이터를 추출할 수 있을 겁니다.

SELECT B.주민번호

   FROM 고객기본 A LEFT OUTER JOIN 고객정보 B ON A.고객번호 = B.고객번호
 

 WHERE A.지점코드 = '819'
 

     AND B.동코드 BETWEEN '111' AND '111'
 

     AND A.고객상태 = '정상'
 

AND (ISDATE('19' || B.주민번호) = 0 OR ISNUMERIC(B.주민번호) = 0)

 

추가로 지적해드리고 싶은 것은

1) 다른 DB도 마찬가지지만 사이베이스에서 형변환은 되도록 명시적으로 해주시구요.

SELECT DATEDIFF(MONTH,CAST('19'||SUBSTR(B.주민번호,1,6) AS DATETIME),현재일자)

2) DATEDIFF에서 datepart는 month 이렇게 써도 되는지 모르겠네요.

SELECT DATEDIFF(mm,'19'||SUBSTR(B.주민번호,1,6),현재일자)
 

정리하면 아래처럼 쓸 수 있겠네요.

DATEDIFF(mm,CAST('19'||LEFT(B.주민번호,6) AS DATETIME),GETDATE())

 

ase님이 2009-12-21 20:42에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3983ASE 성능. [1]
싸베
2009-12-30
6685
3976[급질문]사이베이스초보가 하는 질문 01 [1]
장원영
2009-12-14
9627
3966Sybase PowerDesigner 카페자료실
tjworbs
2009-12-06
8066
3965datediff사용에 대한 오류 문의 [1]
황수원
2009-12-02
9333
3964노트북에 있는 WAP_PROF_I.dmp 파일을 IMPORT 하고 싶어요 [1]
조용주
2009-12-01
7911
3959가로 출력 [1]
궁금이
2009-11-25
7421
3955temporary 옵션 해제 방법 [1]
sybase
2009-11-24
8168
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다