2016-04-28 2 views
3

Я пытаюсь выполнить следующий запрос с использованием Oracle SQLOracle SQL прочитать метку времени из значения в формате YYYYMMDDTHHMMSS

select to_timestamp('2015/06/20T00:00:00','yyyy/mm/dd hh24:mi.ss.ff') from dual; 

Однако это дает мне следующую ошибку

ORA-01858: а не -numeric символ был найден где числовая был ожидается

Если удалить «T» из запроса он работает нормально и возвращает ожидаемое значение, например, ниже.

select to_timestamp('2015/06/20 00:00:00','yyyy/mm/dd hh24:mi.ss.ff') from dual; 

Мой вопрос, есть ли способ, чтобы преобразовать значение, содержащее T в метку времени или будет формат всегда быть неправильным?

Пожалуйста, дайте мне знать, если вам требуется дополнительная информация, и я сделаю все возможное, спасибо за вашу помощь.

+0

[Возможный дубликат] (http://stackoverflow.com/q/24638426/266304) , и есть много других ... –

+0

Определенный дубликат. – mathguy

ответ

6

Просто включите другие символы в двойных кавычках:

select to_timestamp('2015/06/20T00:00:00','yyyy/mm/dd"T"hh24:mi.ss.ff') from dual 
+0

[Ссылка на документацию] (http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements004.htm#sthref406) только для информации. –

2

Вы можете использовать replace():

select to_timestamp(replace('2015/06/20T00:00:00', 'T', ' '), 
        'yyyy/mm/dd hh24:mi.ss.ff')) 
from dual; 
Смежные вопросы