Я хотел был бы преобразовать поле дня платежа от AUTO_TABLE в день месяца. День оплаты хранится в формате строки, и первые девять дней хранятся как одиночный символ. Я хочу добавить строку «0» до дня платежа за день 1-9 и преобразовать полученную строку в «DD». Запрос работал в течение двух месяцев, но при попытке преобразовать строку в дату, Oracle выдает сообщение об ошибке «Недействительный месяц». Как я могу конвертировать день платежа в двухзначные десятичные знаки и перейти к объединению дня с текущим месяцем и годом? Спасибо за вашу помощь.Ошибка преобразования даты в sql
Select case when Payment_Day <> to_char(sysdate, 'dd')
then Payment_Day
end as Payment_day,
Payment_Day2,
trunc(sysdate) - 8 as DateEdit2,
trunc(sysdate) - 15 DateEdit1
From(
Select case when Payment_Day2 > trunc(sysdate)
then Payment_day2 - 31
else Payment_Day2 end as Payment_Day2,
Payment_Day, theSysdate as theSysdate
From(
Select distinct to_date(Payment_Day2, 'MM/DD/YYYY') as Payment_Day2,
Payment_Day, theSysdate
From(
Select thePIDM,
to_char(DateEdit, 'MM') || '/' || to_char(Payment_Day, '00') || '/' || to_char(sysdate, 'YYYY') as Payment_Day2,
to_char(Payment_Day) as Payment_Day, Trunc(theSysdate) theSysdate
From (
Select distinct PIDM as thePIDM,
to_char(Payment_Day) as Payment_Day,
trunc(sysdate) as DateEdit,
to_char(sysdate, 'DD') as theSysdate
from AUTO_TABLE
Group by PIDM, to_char(Payment_Day)
)
)
Order by Payment_Day2
)
Order by Payment_Day2
)
выборки и вывод данных, желания помочь. –
Самый внутренний подзапрос использует оба * DISTINCT * и * GROUP BY *. Это не ошибка, а перебор. Любой вариант даст тот же результат. Кроме того, если payment_day является * string *, вам не нужно преобразовывать его в char 'to_char (Payment_Day)' –