Вставка дня недели и времени в столбец даты Oracle - PullRequest
0 голосов
/ 05 мая 2018

Учитывая следующую инструкцию SQL, что я должен изменить, чтобы вставить только день недели и время, такие как Часы и Минуты:

INSERT INTO SALA_MATERIA(SALA_ID, MATERIA_ID,HORARIO) VALUES (1,'PT', TO_DATE('FRIDAY 15:00','DAY HH24:MI'));

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Я думаю, что вам лучше хранить целую дату - год, месяц, день и время - тогда вы можете просто использовать TO_CHAR() или EXTRACT(), чтобы получить нужные вам части даты. Чтобы сохранить пятницу в столбце DATE, вы можете сделать следующее:

INSERT INTO sala_materia
  ( sala_id, materia_id, horario )
VALUES
 ( 1, 'PT', NEXT_DAY(SYSDATE, 'FRIDAY') );

Это также даст текущее время суток; чтобы использовать произвольное время, вы можете усечь результаты функции NEXT_DAY, а затем использовать интервалы или стандартную арифметику даты Oracle:

INSERT INTO sala_materia
  ( sala_id, materia_id, horario )
VALUES
 ( 1, 'PT', TRUNC( NEXT_DAY(SYSDATE, 'FRIDAY') ) + INTERVAL '15' HOUR );

или

INSERT INTO sala_materia
  ( sala_id, materia_id, horario )
VALUES
 ( 1, 'PT', TRUNC( NEXT_DAY(SYSDATE, 'FRIDAY') ) + 15/24 );

Интервалы могут работать немного лучше, если вам нужно быть более детальным (то есть, минуты и секунды).

Причина, по которой я рекомендую этот порядок действий вместо простого сохранения дня недели и времени в столбце VARCHAR2, заключается в том, что вы можете использовать TO_CHAR() или EXTRACT() при отображении даты, используя части даты в сравнениях и т. д. - вы даже можете создать функциональные индексы или виртуальные столбцы на основе результатов этих функций, примененных к столбцу horario:

CREATE INDEX mydayofweek ON sala_materia ( TO_CHAR(horario, 'DAY') );
0 голосов
/ 05 мая 2018

A DATE всегда имеет год, месяц, день, часы, минуты и секунды. Попытка создать дату только из дня недели и времени не имеет смысла.

Если вы хотите сохранить только эту информацию, используйте столбец VARCHAR2, а не DATE.

Если вы хотите сохранить его как DATE, вам нужно будет указать, в какую пятницу, а также указать год, месяц и день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...