2017-01-31 7 views
0

Screenshot of query executed Строка даты в 'Сб окт 29, 10:47:50 CDT 2016' должен быть преобразован в формат даты/времени в запросе оракула. Мне нужно извлечь из него только дату и время. Я пытался использовать to_date(), но не работал. Может кому-то помочь.Как преобразовать строку даты на дату в oracle

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

+0

Пожалуйста, разместите синтаксис 'to_date()', который вы использовали. Какой формат вы использовали? http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34924 –

+1

Пожалуйста, покажите в вопросе, как вы использовали функцию 'to_date'.? – krokodilko

+0

@Wernfried Пожалуйста, дайте решение, если оно у вас есть. Я никогда не использовал Oracle, поэтому я не мог проверить свой ответ. –

ответ

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 не поддерживает какую-либо информацию о часовом поясе, вы должны удалите эту часть, прежде чем вы сможете выполнить преобразование.

+0

Это извлекает только дату из него, нам нужно время и от него. В столбце DB есть дата, хранящаяся как «** Sat Oct 29 10:47:50 CDT 2016 **» в строчном формате, и нам нужно вытащить записи между 15min/30min интервал, запросив строку column –

+1

Нет, она также считывает время как 'HH24: MI: SS'. Установите флажок «NLS_DATE_FORMAT» текущего сеанса. –

+0

Да .. «HH24: MI: SS» это читает время, но каким-то образом выход не возвращал время, он только показывает. И NLS_DATE_FORMAT - это «DD-MON-RR», я не знаю, как это влияет на вывод запроса? скриншот запроса [https://i.stack.imgur.com/YZOz2.png] –

Смежные вопросы