#sql #oracle
#sql #Oracle
Вопрос:
Я схожу с ума, пытаясь исправить эти небольшие проблемы. Я пытаюсь привести DATE_TIME
все в порядок и хочу MISTI
, чтобы все было в порядке. На скриншоте показан MISTI
порядок, но не даты. Могу ли я каким-либо образом удалить дату 2019 из запроса? ЗАРАНЕЕ БЛАГОДАРЮ ВАС!
select To_Char(state_out_dttm, 'MM/DD/YYYY HH24:MI:SS') AS date_time, PARM, TRK_ID as MISTI,
num_value AS PM_NUMBER
from trk_id_parm
Where trk_id IN ('IMV01','IMV02','IMV03', 'IMV04', 'IMV05')
and state = 'SMM'
and PARM = '4440'
order by MISTI ASC, DATE_TIME DESC;
Комментарии:
1. Вопрос: Сохранили ли вы свой столбец DATE_TIME в базе данных как тип даты / времени… или как ТЕКСТОВЫЙ тип? Вопрос: Какую базу данных вы используете?
2. Я сохранил его как тип даты / времени
3. Так вы хотите сказать, что
state_out_dttm
на самом деле это дата-время, а не текст?4. Это должен быть тип даты / времени. Я добавлю скриншот общего запроса.
Ответ №1:
Поскольку кажется, что ваш state_out_dttm
столбец на самом деле является текстом, а не датой, вы должны использовать TO_DATE
, not TO_CHAR
, для первого преобразования в настоящую дату, прежде чем пытаться сортировать:
SELECT
TO_DATE(state_out_dttm, 'MM/DD/YYYY HH24:MI:SS') AS date_time,
PARM,
TRK_ID AS MISTI,
num_value AS PM_NUMBER
FROM trk_id_parm
WHERE
trk_id IN ('IMV01','IMV02','IMV03', 'IMV04', 'IMV05') AND
state = 'SMM' AND
PARM = '4440' AND
EXTRACT(YEAR FROM TO_DATE(state_out_dttm, 'MM/DD/YYYY HH24:MI:SS')) <> 2019
ORDER BY
MISTI,
TO_DATE(state_out_dttm, 'MM/DD/YYYY HH24:MI:SS') DESC;
Комментарии:
1. Я получаю ORA-01843: недействительный месяц
2. Тогда, возможно, в
state_out_dttm
столбце есть неверные / недопустимые данные. Еще одна причина никогда не сохранять даты в виде текста:-)
3. могу ли я каким-либо образом проверить, что он сохранен в виде текста?
4. Конечно: опишите имя таблицы PS: Я очень надеюсь, что это не производственная база данных, и у вас нет прав администратора: (