2012-03-12 6 views
1

다음 쿼리를 실행하려고하면 ORA-01855: AM/A.M. or PM/P.M. requiredORA-01855 : AM/A.M. 또는 PM/P.M. 필수

이 표시됩니다.

INSERT INTO TBL(ID,START_DATE) 
    values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI AM')) 

여기에서 나의 START_DATE 열의 유형은 "날짜"입니다.

가 나는 쿼리를 다음 실행하고 위의 문제에서 아직 오류, 아직도 성공을 포기하지 않은 :

ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY HH:MI AM"; 
+3

을 사용할 수 있습니다 그리고 편집 창 상단의'{}'버튼을 누르면 코드가 읽기 쉽도록 포맷됩니다. 귀하의 질문에 대한 답변으로'to_date'에서 몇 초가 걸리지 만 형식 마스크에 포함되지 않습니다. – Ben

+0

감사합니다. Ben, 저는 그것을 포맷했습니다. – RMN

+0

벤, 나는 SS가 구원 받기를 원하지 않는다. 나는 분과 AM/PM까지만 저장하고 싶습니다. – RMN

답변

5

귀하의 형식 마스크 변환중인 문자열의 형식과 일치해야합니다. 그래서 당신은 문자열에서 초 형식 마스크에 SS를 추가하거나 제거 할 것 중 하나

INSERT INTO TBL(ID,START_DATE) 
    values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM')) 

또는

INSERT INTO TBL(ID,START_DATE) 
    values (123, TO_DATE ('3/13/2012 9:22 AM', 'MM/DD/YYYY HH:MI:SS AM')) 

당신이 초 포함 된 문자열을 수락 할 경우

하지만 당신은 원하지 않는다 질문을 할 때 당신이 당신의 협력을 강조하는 경우 (이 경우 오라클은 항상 초 0을 저장합니다) 데이터베이스에 초를 저장하기 위해, 당신은 TRUNC 기능

INSERT INTO TBL(ID,START_DATE) 
    values (123, TRUNC(TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 'MI')) 
+0

프런트 엔드에서 어떻게 제거합니까? 그 문자열은 프론트 엔드에서 얻은 것입니다. 그 문자열 만 변경하거나 허용 할 수있는 방법이 있습니까? 프론트 엔드에서는 datetime 형식입니다. – RMN

+0

@ RMN- 항상 초 수를 0으로 저장하려면 'DATE'를 (를) 분으로 자르는 옵션을 포함하도록 답변을 업데이트했습니다. –