Страница 1 из 1

DateTime из Oracle

Добавлено: 31 мар 2015, 13:09
Gameus_
Всем доброго дня.
Тема скорее всего стара, но поиском не нашел :( Подскажите плиз, как из оракла вытащить дату из поля типа DateTime. Например KatParty.createdatetime

Пока получилось что-то вроде

Код: Выделить всё

select to_date(to_number(substr(t.fcreatedatetime,7,2),'xx')||'.'||to_number(substr(t.fcreatedatetime,5,2),'xx')||'.'||to_number(substr(t.fcreatedatetime,2,3),'xxxx'),'dd.mm.yyyy') fromkatparty t where t.fcreatedatetime <>'8000000000000000';
но может есть более простой вариант?

Re: DateTime из Oracle

Добавлено: 31 мар 2015, 13:27
RAJAH

Re: DateTime из Oracle

Добавлено: 31 мар 2015, 13:53
Gameus_
При использовании TO_ORADATE валится с ошибкой ORA-07122: неверное число (в моем случае t.fcreatedatetime равно '84BC020311170000'), отсюда и новая тема...

Re: DateTime из Oracle

Добавлено: 31 мар 2015, 14:05
RAJAH
Gameus_ писал(а):При использовании TO_ORADATE валится с ошибкой ORA-07122: неверное число (в моем случае t.fcreatedatetime равно '84BC020311170000')
Я, конечно, не специалист в Oracle, но, вроде, TO_ORADATE ожидает INTEGER в качестве аргумента.

Re: DateTime из Oracle

Добавлено: 31 мар 2015, 15:28
Gameus_
RAJAH писал(а):
Gameus_ писал(а):При использовании TO_ORADATE валится с ошибкой ORA-07122: неверное число (в моем случае t.fcreatedatetime равно '84BC020311170000')
Я, конечно, не специалист в Oracle, но, вроде, TO_ORADATE ожидает INTEGER в качестве аргумента.
В базе хранятся в виде 84BC020311170000 и тому подобное :) :) (лезу по дб линку)
Муть какая-то в общем :)

Re: DateTime из Oracle

Добавлено: 31 мар 2015, 15:34
RAJAH
84BC020311170000 - это не строка. Это 9564521920822968320 в 16-ричной системе счисления.

Re: DateTime из Oracle

Добавлено: 31 мар 2015, 15:37
m0p3e
Только имейте ввиду, что to_oradate не имеет защиты от нулевого значения.

Re: DateTime из Oracle

Добавлено: 31 мар 2015, 15:41
Gameus_
m0p3e писал(а):Только имейте ввиду, что to_oradate не имеет защиты от нулевого значения.
Аналог to_oradate у меня есть уже, переделанный под обработку нулевых :) но вот кушать datetime он отказался :( ругался на неверное числовое значение.


В общем решилось все при помощи TO_ORADATETIME :)

Всем спасибо большое за потраченное время!