#sql #oracle #oracle-apex
#sql #Oracle #oracle-apex
Вопрос:
create table Schedule (
lms_code varchar (100),
bcode varchar (100),
start_date varchar (100),
end_date varchar (100),
timings time
);
Ответ №1:
На мой взгляд, вы бы
-
используйте
VARCHAR2
тип данных (неVARCHAR
). Почему? Oracle говоритТип данных VARCHAR является синонимом типа данных VARCHAR2. Чтобы избежать возможных изменений в поведении, всегда используйте тип данных VARCHAR2 для хранения символьных строк переменной длины.
-
start_date
иend_date
должно бытьDATE
, нетVARCHAR2
. Всегда сохраняйте даты вDATE
столбце типа данных, никогда не сохраняйте их в виде строкVARCHAR2
. Почему? Сегодня 6 ноября 2020 года, и вы бы сохранили его вDATE
столбце типа данных, например, как литерал даты :date '2020-11-06'
. Если бы это былVARCHAR2
столбец, вы могли бы поместить06.11.2020
в него, или1f.scx3.f4
, илиLittlefoot
… все это строки, и у вас возникнут проблемы, если вы будете настаивать на сохранении дат в виде строк. -
что касается
timings
столбца, вопрос в следующем: что вы будете там хранить? В Oracle нетtime
типа данных, поэтому вы бы использовалиdate
(если вас устраивает время до секунд),timestamp
(если вам нужны доли секунды) или … Я не знаю, что-то еще — опять же, в зависимости от того, что вы будете хранить в этом столбце
Итак: чтобы заставить его работать, вы могли бы
SQL> create table Schedule (
2 lms_code varchar2 (100),
3 bcode varchar2 (100),
4 start_date date,
5 end_date date,
6 timings date
7 );
Table created.
SQL>
Ответ №2:
вы используете неправильный тип данных, у нас нет типа данных time, вы можете использовать TIMESTAMP
:
CREATE TABLE Schedule
(
lms_code VARCHAR(100)
, bcode VARCHAR(100)
, start_date VARCHAR(100)
, end_date VARCHAR(100)
, timings TIMESTAMP
);