У меня есть таблица, которая содержит только временную часть.
TIME
08:00
08:00
08:00
08:00
18:00
19:00
20:00
Теперь мне нужно соединить время с текущей датой. для этого я попытался с кодом ниже.
to_date( to_char (sysdate,'YYYYMMDD')|| Time,'HH24MI')
но это не работает должным образом и получает следующую ошибку
ORA-01830: Изображение формата даты заканчивается до преобразования всей входной строки
Не могли бы вы помочь мне решить эту проблему. Ожидаемый результат (формат даты и времени):
14-Feb-23 08:00
14-Feb-23 09:00
Какой тип данных вы ожидаете в результате? Строка?
SQL> with test (time) as
2 (select '08:00' from dual)
3 select to_char(sysdate, 'dd-Mon-yy ') || time as result
4 from test;
RESULT
---------------
14-Feb-23 08:00
Если вы ожидаете дату, то
SQL> with test (time) as
2 (select '08:00' from dual)
3 select to_date(to_char(sysdate, 'dd-Mon-yy ') || time, 'dd-Mon-yy hh24:mi') as result
4 from test;
RESULT
--------
14.02.23
Хм, что это за формат?! Мой по умолчанию! Измените его на что-то другое, например. то, что вы сказали, что хотите, но, тем не менее, значение, возвращаемое предыдущим кодом, является допустимым значением даты:
SQL> alter session set nls_date_format = 'dd-Mon-yy hh24:mi';
Session altered.
SQL> with test (time) as
2 (select '08:00' from dual)
3 select to_date(to_char(sysdate, 'dd-Mon-yy ') || time, 'dd-Mon-yy hh24:mi') as result
4 from test;
RESULT
---------------
14-Feb-23 08:00
SQL>
У вас есть строки времени, такие как '08:00'
. А у вас есть to_date( to_char (sysdate,'YYYYMMDD')|| Time,'HH24MI')
.
Выражение to_char (sysdate,'YYYYMMDD')|| Time
приводит к чему-то вроде '2023021408:00'
.
Вы хотите преобразовать эту результирующую строку в дату и время (которую Oracle неправильно называет DATE
) с TO_DATE
: to_date('2023021408:00', 'HH24MI')
.
Вы заметили, что построенная вами строка и формат, который вы используете, не совпадают? Формат вашей строки не 'HH24MI'
, а 'YYYYMMDDHH24:MI'
.
Следовательно, используйте:
TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD') || time, 'YYYYMMDDHH24:MI')
ожидаемый тип данных - дата и время.