도저히 모르겠습니다. 도와주세요..
오라클 버전은 10.2 입니다.
SELECT TO_DATE(reqdt, 'YYYY-MM-DD HH24:MI:SS') AS reqdt,
TO_DATE(RESERVEDT, 'YYYY-MM-DD HH24:MI:SS') AS RESERVEDT,
TO_DATE(SENTDT, 'YYYY-MM-DD HH24:MI:SS') AS SENTDT
FROM test
WHERE 1=1
AND userid = 'test'
이쿼리를 실행 시키면 정상적인 결과가 나옵니다. 하지만
SELECT TO_DATE(reqdt, 'YYYY-MM-DD HH24:MI:SS') AS reqdt,
TO_DATE(RESERVEDT, 'YYYY-MM-DD HH24:MI:SS') AS RESERVEDT,
TO_DATE(SENTDT, 'YYYY-MM-DD HH24:MI:SS') AS SENTDT
FROM MSGSUMMARY
WHERE 1=1
AND userid = 'test'
ORDER BY CODE
order by 만 붙이면
ORA-01861: literal does not match format string 이런 에러가 떠버리네요....
code 는 number 타입이며 null 값이 있는것도 아님니다. ..
정말 답답하네요.. 혹시 저같은 현황 경험 해보신분이라면 제발 답변좀 부탁드립니다. 감사합니다.
본문에도 있듯이
SELECT TO_DATE(reqdt, 'YYYY-MM-DD HH24:MI:SS') AS reqdt,
TO_DATE(RESERVEDT, 'YYYY-MM-DD HH24:MI:SS') AS RESERVEDT,
TO_DATE(SENTDT, 'YYYY-MM-DD HH24:MI:SS') AS SENTDT
FROM MSGSUMMARY
WHERE 1=1
AND userid = 'test'
이렇게 실행시켰을때는 오류 없이 잘나옵니다 데이터 포멧도 잘되구요 ㅜㅜ
DarkBee 님 말씀 되로 라면 위에 쿼리도 에러가 나야겠지요... 답변 감사드립니다.
혹시 이 쿼리 뜻이 YYYY-MM-DD HH24:MI:SS 이포멧 아닌데이터를 찾아 내는게 맞는지요?
참고로 필드에는 20110831185644이런식으로 데이터가 들어가 있습니다..
참고로
SELECT TO_DATE(reqdt, 'YYYY-MM-DD HH24:MI:SS') AS reqdt,
TO_DATE(RESERVEDT, 'YYYY-MM-DD HH24:MI:SS') AS RESERVEDT,
TO_DATE(SENTDT, 'YYYY-MM-DD HH24:MI:SS') AS SENTDT
FROM MSGSUMMARY
이렇게 실행 시켜봤더니 잘됩니다.
-- 네 맞습니다. -- 데이터 포멧이 그렇다면 아래와 같이 쿼리를 정확히 해주시면 좋겠네요.. SELECT TO_DATE(reqdt, 'YYYYMMDDHH24MISS') AS reqdt, TO_DATE(RESERVEDT, 'YYYYMMDDHH24MISS') AS RESERVEDT, TO_DATE(SENTDT, 'YYYYMMDDHH24MISS') AS SENTDT FROM test WHERE 1=1 AND userid = 'test' ; -- 그리고 해당 에러는 아마도 자리수가 너무 많아서 생기는게 아닐가 싶은데요.. -- 아래 처럼 한번 찾아 보시죠.. SELECT * FROM MSGSUMMARY WHERE LENGTH(reqdt) != 14 OR LENGTH(RESERVEDT) != 14 OR LENGTH(SENTDT) != 14 ;
개발뉴비 //
SELECT TO_DATE(reqdt, 'YYYYMMDDHH24MISS') AS reqdt,
TO_DATE(RESERVEDT, 'YYYYMMDDHH24MISS') AS RESERVEDT,
TO_DATE(SENTDT, 'YYYYMMDDHH24MISS') AS SENTDT
FROM MSGSUMMARY
이렇게 하닌깐 잘되는데
SELECT TO_DATE(reqdt, 'YYYYMMDDHH24MISS') AS reqdt,
TO_DATE(RESERVEDT, 'YYYYMMDDHH24MISS') AS RESERVEDT,
TO_DATE(SENTDT, 'YYYYMMDDHH24MISS') AS SENTDT
FROM MSGSUMMARY ORDER BY CODE
이렇게 하닌깐
ORA-01839: date not valid for month specified 이런 에러가 뜨네요 ? 답변 감사합니다.
미친척하고
페이징으로
SELECT rownumber ,
code,
TO_DATE(RESERVEDT, 'YYYY-MM-DD HH24:MI:SS') AS RESERVEDT,
TO_DATE(SENTDT, 'YYYY-MM-DD HH24:MI:SS') AS SENTDT,
TO_DATE(reqdt, 'YYYY-MM-DD HH24:MI:SS') AS reqdt
FROM
(SELECT ROWNUM rownumber,
code,
RESERVEDT ,
reqdt ,
SENTDT
FROM
(SELECT code ,
RESERVEDT,
SENTDT,
reqdt
FROM MSGSUMMARY
ORDER BY code
)a
)b
WHERE rownumber >=1
AND rownumber <= 37959
쿼리를 짰더니, 에러가 안나네요.. 알다가도 모르겠습니다..
-- 펑션 생성 create or replace function F_ISDATE ( strDate IN varchar2 ) return VARCHAR is work date; begin work := to_date(strDate,'yyyymmddhh24miss'); return 'Y'; exception when others then return 'N'; end; -- 검증 ( N 인놈을 찾으세요 ) SELECT F_ISDATE ( reqdt ) a , F_ISDATE ( reservedt ) b , F_ISDATE ( sentdt ) c FROM MSGSUMMARY ORDER BY LEAST ( a, b, c )