Nano Hash - криптовалюты, майнинг, программирование

SQL, добавьте поле времени в столбец даты

У меня есть поле, которое дает мне время, и оно выражается так:

7:00 AM

проблема в том, что когда я пытаюсь добавить его в столбец, который должен содержать время, это дает мне ошибку, потому что формат неверен.

Я попытался изменить формат с помощью 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;

Обратите внимание, что тип данных даты не может быть изменен на другой.

Спасибо за внимание.

Данило


  • Что вы храните время в отдельном поле? Вы должны поместить два в один столбец. 11.11.2017
  • для задания обязательно помещать их в отдельные столбцы. Я бы хотел, чтобы это было так же, это сделало бы мою жизнь намного проще. 11.11.2017
  • Вы должны поместить их в один столбец в любом случае. Вы можете разделить дату и время, например, по виртуальному столбцу или по представлению. 11.11.2017

Ответы:


1

Почему вы храните время в отдельном поле? Вы знаете, что 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)   
);

Затем я бы предложил вставить значения, используя ключевое слово Oracle TIMESTAMP:

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');

Обратите внимание, что я также удалил одинарные кавычки вокруг чисел, а insert перечисляет все столбцы.

11.11.2017
  • Я понимаю, в этом случае я думаю, чтобы удовлетворить запрос на наличие двух столбцов (это было указано в требованиях к упражнению), я всегда мог дублировать дату и время (создать 2 столбца, один только с датой, а другой с датой и временем ), а затем при вызове двух столбцов с помощью оператора select я просто получаю частичную часть записи. Я думаю, это может получиться. 12.11.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..