난 그 시간 구성 요소가 된대로 DATE
데이터 유형에 대한 조금 혼란 것 같아요 -이 외설 분리 기호 오라클에서는 DATETIME
유형을 먹었습니다. RECEIVEDDATE
필드가 이미 DATE
인 경우에는 불필요한 것으로 변환되지만 중간에있는 문자열로의 암시 적 변환도 수행하고 있습니다.
TO_DATE(PROJ.RECEIVEDDATE, 'MM/dd/yyyy')
정말
TO_DATE(TO_CHAR(PROJ.RECEIVEDDATE, <NLS_DATE_FORMAT>), 'MM/dd/yyyy')
을하고있다 ... 그리고 NLS 형식
DD/MM/YYYY
을 할 수있는 ORA-08143 오류가 당신을 제안합니다. 날짜의 일 부분이 12보다 큰 경우 12보다 큰 숫자가없는 월이 없으므로 이러한 종류의 오류가 발생할 수 있습니다. 2005-01-18에서 작업 한 것처럼 보이므로 18 개월을 1 년으로 해석하므로 오류는 합리적입니다.
질문의 첫 번째 부분을 어떻게 표현했는지에 따라 두 번째 쿼리에서 수행하는 필드의 시간 부분을 제거하려고합니다. 이번에는 명시적인 날짜 형식 모델을 사용하기 때문에 작동합니다. . 그러나이 변환을 수행하는 것은 당신이 그렇게 할 수 TRUNC
function을 사용할 수 있습니다, 정말 필요하지 않습니다 :
SELECT TRUNC(PROJ.RECEIVEDDATE)
FROM PROJ
마지막 부분은 비록 조금 혼란 - 그 '잘못'아니다, 당신이 클라이언트가있어 방법 DATE
값의 형식을 선택합니다. 당신은 특정 형식으로 볼 단지 TO_CHAR
을 사용하고 당신도 TRUNC
필요가 없습니다하려는 경우 :
SELECT TO_CHAR(PROJ.RECEIVEDDATE, 'mm/dd/yyyy')
FROM PROJ
을 ...하지만 당신이 무슨 일을하는지 따라 달라집니다 - 당신이 사용하는 경우 그것은 순전히 디스플레이를위한 것이기 때문에 더 큰 쿼리의 다른 곳에서 사용될 경우 DATE
으로 남겨 두십시오.
단순히 to_char 함수를 실행하면 어떻게 될까요? –
to_char을 할 때 서식이 정확하지만 날짜가 아니므로 번호순으로 만 정렬됩니다. –
Eclipse 내부에있는 경우 JDBC를 사용 중입니다. 그것은 잠시이지만'RECEIVEDDATE FROM PROJ'가 java.sql.Date 객체를 반환하지 않을 것인가? –