2017-11-11 19 views
0

나는 나에게 시간을 제공하는 필드가 다음과 같이 표현된다SQL, 날짜 열에서 시간 필드를 추가

오전 7시

문제는 내가하려고 할 때 추가 할 것입니다 형식을 잘못했기 때문에 시간을 포함해야하는 열에 오류가 발생합니다.

to_char를 사용하여 형식을 변경하려고했지만 함수가 구현되지 않았다는 오류가 발생했습니다.

여기 코드가 있습니다.

CREATE TABLE call_info 
(
    call_id NUMBER(4) 
    CONSTRAINT cio_call_id_CK CHECK (call_id >= 1000 AND call_id <= 9999), 
    report_first VARCHAR2(10), 
    report_last VARCHAR2(11) CONSTRAINT cio_report_last_NN NOT NULL, 
    report_date DATE CONSTRAINT cio_report_date_NN NOT NULL, 
    report_time DATE CONSTRAINT cio_report_time_NN NOT NULL, 
    problem_code NUMBER(1) CONSTRAINT cio_problem_code_NN NOT NULL, 
    service_code VARCHAR2(4), 
    CONSTRAINT cio_call_id_PK PRIMARY KEY (call_id), 
    CONSTRAINT cio_problem_code_FK FOREIGN KEY (problem_code) 
    REFERENCES problems(code), 
    CONSTRAINT cio_service_code_FK FOREIGN KEY (service_code) 
    REFERENCES services(code) 
) 
; 

BEGIN 
INSERT INTO call_info 
VALUES ('1102','Bill','Madden',TO_DATE('29-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('7:00 PM','hh:mi AM'),'hh:mi-AM'),'2','PSEG'); 
INSERT INTO call_info 
VALUES ('1103','Anita','Verno',TO_DATE('29-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('7:01 PM','hh:mi AM'),'hh:mi-AM'),'2','PSEG'); 
INSERT INTO call_info 
VALUES ('1200','Emily','Vandalovsky',TO_DATE('29-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('7:45 PM','hh:mi AM'),'hh:mi-AM'),'2','PSEG'); 
INSERT INTO call_info 
VALUES ('1111','Gary','Correa',TO_DATE('29-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('8:10 PM','hh:mi AM'),'hh:mi-AM'),'1','DPR'); 
INSERT INTO call_info 
VALUES ('1101','Mickey','Mouse',TO_DATE('29-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('11:00 PM','hh:mi AM'),'hh:mi-AM'),'6','PSEG'); 
INSERT INTO call_info 
VALUES ('1012','Minnie','Mouse',TO_DATE('29-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('11:21 PM','hh:mi AM'),'hh:mi-AM'),'1','DPR'); 
INSERT INTO call_info 
VALUES ('1013','Goofy','Disney',TO_DATE('29-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('11:47 PM','hh:mi AM'),'hh:mi-AM'),'5','OEM'); 
INSERT INTO call_info 
VALUES ('1040','Donald','Duck',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('2:34 AM','hh:mi AM'),'hh:mi-AM'),'4','OEM'); 
INSERT INTO call_info 
VALUES ('1501','Cinderella','Disney',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('3:15 AM','hh:mi AM'),'hh:mi-AM'),'3','CSH'); 
INSERT INTO call_info 
VALUES ('1506','Ernie','Sesame',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('3:16 AM','hh:mi AM'),'hh:mi-AM'),'3','CSH'); 
INSERT INTO call_info 
VALUES ('1007','Burt','Sesame',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('3:18 AM','hh:mi AM'),'hh:mi-AM'),'3','CSH'); 
INSERT INTO call_info 
VALUES ('1081','Bruce','Springsteen',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('4:10 AM','hh:mi AM'),'hh:mi-AM'),'2','PSEG'); 
INSERT INTO call_info 
VALUES ('1910','Chris','Christie',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('4:25 AM','hh:mi AM'),'hh:mi-AM'),'7','OEM'); 
INSERT INTO call_info 
VALUES ('1010','Mitt','Romney',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('5:15 AM','hh:mi AM'),'hh:mi-AM'),'1','DPR'); 
INSERT INTO call_info 
VALUES ('1015','Barack','Obama',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('5:17 AM','hh:mi AM'),'hh:mi-AM'),'1','DPR'); 
INSERT INTO call_info 
VALUES ('1019','Bruce','Wayne',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('7:57 AM','hh:mi AM'),'hh:mi-AM'),'5','OEM'); 
INSERT INTO call_info 
VALUES ('1314','Minas','Kousoulis',TO_DATE('30-OCT-17','DD-MON-YY'),TO_CHAR(TO_DATE('8:01 AM','hh:mi AM'),'hh:mi-AM'),'4','WTR'); 
END; 

데이터 유형을 다른 날짜로 변경할 수 없습니다.

감사합니다.

다닐로

+2

시간을 별도의 필드에 저장하고 있습니까? 둘을 하나의 열에 넣어야합니다. –

+0

실제로 할당을 별도의 열에 배치해야합니다. 나는 그것이 같았 으면 좋았을 텐데, 그것은 내 인생을 편하게 만들었을 것입니다. –

+0

어쨌든 한 열에 넣어야합니다. 예를 들어 가상 열이나보기를 사용하여 날짜와 시간을 나눌 수 있습니다. –

답변

0

왜 다른 필드에 시간을 저장하고 있습니까? DATE에 "시간"구성 요소가 있다는 것을 알고 있습니까? 필드를 분리하면 거의 절대하지 않습니다 의미 :

CREATE TABLE call_info (
    call_id NUMBER(4) 
    CONSTRAINT cio_call_id_CK CHECK (call_id >= 1000 AND call_id <= 9999), 
    report_first VARCHAR2(10), 
    report_last VARCHAR2(11) CONSTRAINT cio_report_last_NN NOT NULL, 
    report_datetime DATE CONSTRAINT cio_report_date_NN NOT NULL, 
    problem_code NUMBER(1) CONSTRAINT cio_problem_code_NN NOT NULL, 
    service_code VARCHAR2(4), 
    CONSTRAINT cio_call_id_PK PRIMARY KEY (call_id), 
    CONSTRAINT cio_problem_code_FK FOREIGN KEY (problem_code) 
    REFERENCES problems(code), 
    CONSTRAINT cio_service_code_FK FOREIGN KEY (service_code) 
    REFERENCES services(code) 
); 

그럼 오라클에게 TIMESTAMP 키워드를 사용하여 값을 삽입하는 제안 : 나는 또한 숫자의 주위에 작은 따옴표와 insert 목록을 제거

INSERT INTO call_info (call_id, report_first, report_last, report_datetime, problem_code, service_code) 
    VALUES (1102, 'Bill', 'Madden', TIMETAMP '2017-10-29 19:00:00', 
2, 'PSEG'); 

참고 모든 열.

+0

이 경우에는 두 개의 열 (운동 요구 사항에 명시되어 있음)을 요청한 것으로 알고 있습니다. 나는 항상 날짜와 시간을 복제 할 수 있습니다 (날짜와 시간이 모두있는 두 개의 열을 만들고 날짜와 시간이 모두있는 두 개의 열을 만듭니다. 시간) 및 select 문을 사용하여 두 개의 열을 호출 할 때 나는 단지 레코드의 부분 부분을 가져옵니다. 나는 이것이 그것을 만들 수 있다고 생각한다. –