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
운영게시판
최근게시물
Oracle Q&A 41496 게시물 읽기
No. 41496
아;; 단순쿼리인데 도저히 원인을 모르겠네요;;
작성자
정군(jkun)
작성일
2017-12-14 11:04
조회수
6,295
SELECT
  COUNT(1)
FROM (
  SELECT
    TO_NUMBER( EXTRACT(YEAR FROM DATE'2017-01-01') - EXTRACT(YEAR FROM TO_DATE(BIRTH_DAY, 'YYYYMMDD')) ) AS AGE,
    XX.*
  FROM MEMBER_INFO XX
  WHERE BIRTH_DAY IS NOT NULL  
) XXX
WHERE XXX.AGE > 30 AND XXX.AGE < 40
 
대충 이런 쿼리가 있는데 안에 빨간색 쿼리만 돌리면 잘 돌아갑니다.
 
근데 감싸서 파란색 쿼리까지도 잘 돌아갑니다.
 
그런데 저 분홍색 쿼리를 추가하면 
 
ORA-01840: 입력된 값의 길이가 날짜 형식에 비해 부족합니다
01840. 00000 -  "input value not long enough for date format"
*Cause:    
*Action:

제가 오라클을 8i 이후로 써보질 않아서요;; 되게 일반적인 쿼리라 생각도 몬한 에러 만나니 심신이 아파지네요;;

조언좀 부탁드립니다. ㅠ

 

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

위 쿼리는 COUNT 쿼리이므로 굳이 age 를 계산할 필요가 없습니다.
where 조건이 붙기 전에는 age 가 실행되지 않는다고 보시면 됩니다.
where 조건 붙음으로 인해 age를 실제로 계산하게 되는 거구요.
오류는 BIRTH_DAY 저장값중 YYYYMMDD 형식이 아닌 오류 자료가 있는 거죠.

마농(manon94)님이 2017-12-14 14:14에 작성한 댓글입니다.

마농님 말씀이 맞다면 빨간 부분만 돌렸을 때도 오류가 났어야 하는데..

만약 오류가 안 났다면 전체 대상을 다 돌려본 게 아니라

상위 몇 건만 부분처리 된 상황일듯..

손재균(iikii)님이 2017-12-15 12:13에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41500중복값 제거하는데 잘안되네요...^^ [2]
김성호
2017-12-18
5871
41499DBF 파일 확장관련입니다. [1]
전성용
2017-12-18
5322
41497solaris 11 proc 사용해보신분?
신우철
2017-12-16
5639
41496아;; 단순쿼리인데 도저히 원인을 모르겠네요;; [2]
정군
2017-12-14
6295
41495시작과 끝정보 시간계산 [7]
오라클초보
2017-12-14
5993
414949억건 업테이트와 인서트
엑소
2017-12-13
5693
41493오라클 복구 여부 확인좀 부탁드립니다. [1]
복구확인
2017-12-12
5422
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다