У меня есть текстовое поле, которое является датой, хотя иногда оно также имеет компонент времени. Пример:Oracle 10g - компонент времени удаления
"23/1/1999"
"25/2/2003 05:18:00"
Теперь я просто хочу запросить их и заказать только по компоненту даты. Моя попытка
TO_DATE(
TO_CHAR(
TO_DATE(mytextfield , 'DD-MM-YYYY HH:MI:SS')
,'DD-MM-YYYY')
,'MON-YYYY')
выше не будет работать на внешнем TO_DATE (ORA-01843 недопустимый месяц.)
TO_CHAR(
TO_DATE(mytextfield , 'DD-MM-YYYY HH:MI:SS')
,'DD-MM-YYYY')
указанных работ, но я остаюсь со строкой, а не дата.
-------- Решение с использованием принятого ответа
Просто используйте
EXTRACT(MONTH FROM TO_DATE(timetable.string_time) , 'DD-MM-YYYY HH24:MI:SS'))
EXTRACT(YEAR FROM TO_DATE(timetable.string_time) , 'DD-MM-YYYY HH24:MI:SS'))
Как указано на ответ, вы можете поменять порядок ее использовании в ORDER BY и в SELECT.
Нужно немного форматирования числа в месяц, а некоторые конкаты, но это работает очень хорошо.
+1, но я уверен, что 'HH' должен быть' HH24'. – ruakh
Вы правы. Исправленный. – Anonymous
Но как изменить дату, после TRUNC, в формате MON-YYYY? Я не могу этого сделать. –