Я работаю над набором данных, который содержит информацию о дорожно-транспортных происшествиях и времени их возникновения. (набор данных существует в SQL Сервер под именем ДТП ).
У меня есть столбец в формате date
. Я хотел бы извлечь время из колонки. Затем добавьте новый столбец с именем lightining_period
, отметьте время как днем или ночью . Моя проблема в том, чтобы установить диапазон времени, так как я получаю неправильную метку каждый раз, когда запускаю код.
Различные периоды освещения (дневное время: 6 утра - 5:59 вечера и ночное время 6 вечера - 5:59 утра).
[1] Сначала я написал этот код, чтобы извлечь время от accident_date_time
и сохраните его в новом столбце time
.
create table lightiningPeriod as
select to_char(accident_date_time,'HH:MMAM') as time
from accident.accident;
[2] Затем я изменил таблицу, добавив столбец lightining_label
, в котором я хочу хранить метки днем / ночью .
alter table lightiningPeriod add (
lightining_label varchar2(20)
);
[3] Наконец, я использовал оператор Update, чтобы изменить значения lightining_label
в соответствии с диапазонами time
. Но таблицы выходят не так. Я пытался использовать между , to_date , cast , convert , но ни один из них не работал.
update lightiningPeriod
set lightining_label='daytime'
where time >= '06:00AM'
and time <= '5:59PM';
ниже приведен пример вывода, который показывает неправильные метки.
time lightining_label
06:04AM daytime
11:04AM daytime
01:04AM (null)
10:04AM daytime
10:04AM daytime
04:04PM (null)
07:04PM daytime
01:04PM (null)