как хранить значения с двойным двоеточием в таблице базы данных oracle

#excel #oracle #sqldatatypes #varchar2

Вопрос:

У меня есть excel то, что я пытаюсь импортировать в таблицу базы данных oracle.

Некоторые значения в Excel состоят, например 14:39.5 , из двойного двоеточия. Какие данные в таблице базы данных oracle я должен предоставить для хранения этого значения ?

В настоящее время задан varchar тип данных и его выдача ошибки при импорте как :

 Conversion error! Value: "00:12:01.615518000" to data type: "Number". Row ignored! Value is '00:12:01.615518000'. Cannot be converted to a decimal number object. Valid format: 'Unformatted'
 

Комментарии:

1. Вы сказали: «В настоящее время задан тип данных varchar», но ошибка говорит о том, что вы объявили его как ЧИСЛО. Так что же это такое? Я бы посоветовал вам начать с обновления вашего вопроса, чтобы показать DDL для таблицы. И объясните точно, что на самом деле означает «14:39.5». Это должно быть время суток? Прошедшее время? Что — то совсем другое?

Ответ №1:

Вы можете сохранить его как INTERVAL DAY(0) TO SECOND(9) тип данных:

 CREATE TABLE table_name (
  time INTERVAL DAY(0) TO SECOND(9)
);
 

Затем вы можете использовать TO_DSINTERVAL передачу своего значения с '0 ' добавлением к началу:

 INSERT INTO table_name (time)
VALUES ( TO_DSINTERVAL('0 ' || '00:12:01.615518000') );
 

бд<>скрипка <>здесь

Ответ №2:

Если это часть метки даты/времени, вы можете сохранить ее как DATE или TIMESTAMP добавить компонент даты. У Oracle есть не просто TIME тип данных.

Если вы не можете добавить к нему компонент даты, то, предполагая, что это временной интервал, вы можете преобразовать его в секунды или микросекунды (потерять двоеточия) и сохранить как NUMBER .

Если вы хотите сохранить точное форматирование, как показано на рисунке, ваш единственный вариант-сохранить его в виде текста с помощью VARCHAR2 или чего-то подобного.