Как добавить текущую дату в столбец времени в oracle sql

У меня есть таблица, которая содержит только временную часть.

  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
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
55
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Какой тип данных вы ожидаете в результате? Строка?

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>

ожидаемый тип данных - дата и время.

sivakumar V 14.02.2023 08:12

У вас есть строки времени, такие как '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')

Другие вопросы по теме