Как преобразовать строку даты в дату в оракуле

Скриншот выполненного запросаСтрока даты в 'Sat 29 Oct 10:47 :50 CDT 2016» необходимо преобразовать в формат даты/времени в запросе оракула. Мне нужно извлечь из него только дату и время. Я пытался использовать to_date(), но не работал. Может кто-нибудь, пожалуйста, помогите.

Ошибка: ORA-01841: (полный) год должен быть между -4713 и +9999, а не 0 01841. 00000 - "(полный) год должен быть между -4713 и +9999, а не 0" * Причина: недопустимо введенный год *Действие: введите год в указанном диапазоне


person Manasa Salla    schedule 31.01.2017    source источник
comment
Пожалуйста, опубликуйте синтаксис to_date(), который вы использовали. Какой формат вы использовали? docs.oracle.com/cd/B19306_01/server. 102/b14200/   -  person Nick.McDermaid    schedule 31.01.2017
comment
Пожалуйста, покажите в вопросе, как вы использовали функцию to_date.?   -  person krokodilko    schedule 31.01.2017
comment
@Wernfried Пожалуйста, дайте решение, если оно у вас есть. Я даже никогда не использовал Oracle, поэтому я не мог проверить свой ответ.   -  person Tim Biegeleisen    schedule 31.01.2017
comment
Order_date имеет строковый формат метки времени заказа, полученного, как указано выше, и запрос -- выберите to_date(order_date ,'ГГГГ-ММ-ДД ЧЧ24:МИ:СС') из table_name, где rownum‹=3;   -  person Manasa Salla    schedule 31.01.2017


Ответы (1)


Попробуй это:

SELECT TO_DATE(
   REGEXP_REPLACE('Sat Oct 29 10:47:50 CDT 2016', '^\w+ (\w+ \d+ \d{2}:\d{2}:\d{2}).+(\d{4})', '\1 \2'), 
      'Mon DD HH24:MI:SS YYYY')
FROM DUAL

Тип данных DATE или TIMESTAMP не поддерживает информацию о часовом поясе, вы должны удалить эту часть, прежде чем сможете выполнить преобразование.

person Wernfried Domscheit    schedule 31.01.2017
comment
Это извлекает из него только дату, нам также нужно из него время. В столбце БД хранится дата, сохраненная как Sat Oct 29 10:47:50 CDT 2016 в строковом формате, и нам нужно вытащить записи между Интервал 15 мин/30 мин путем запроса столбца строки - person Manasa Salla; 31.01.2017
comment
Нет, он также считывает время как HH24:MI:SS. Проверьте NLS_DATE_FORMAT настройку вашего текущего сеанса. - person Wernfried Domscheit; 31.01.2017
comment
Да..HH24:MI:SS это считывает время, но почему-то вывод не возвращает время, он показывает только . И NLS_DATE_FORMAT - это DD-MON-RR, я не знаю, как это влияет на вывод запроса? скриншот запроса [i.stack.imgur.com/YZOz2.png] - person Manasa Salla; 31.01.2017
comment
NLS_DATE_FORMAT определяет формат вывода по умолчанию для DATE значений. Измените его (например, на yyyy-mm-dd hh24:mi:ss) или явно определите формат вывода с помощью TO_CHAR(TO_DATE(REGEXP_REPLACE(...., 'yyyy-mm-dd hh24:mi:ss') - person Wernfried Domscheit; 31.01.2017