Sybase-эквивалент в Oracle - PullRequest
       15

Sybase-эквивалент в Oracle

2 голосов
/ 29 марта 2011

Я делаю изменение кода с Sybase на Oracle.У меня проблема с преобразованием приведенного ниже запроса в oracle.

Select Custodian_addr,convert(datetime,dateadd(ss,CreateDT,"01/01/1970")

Здесь CreateDT - это имя столбца, значение которого, например, 1015015173 Результат преобразования даты (для этого примера) - 1 марта 2002 г.20:39 GMT

Я исследовал и нашел альтернативу оракула, которая приводит к ошибке

Select Custodian_addr,to_char(CreateDT,"SS")

Я получаю ошибку запроса в Oracle. Я не могу определить, что не так.Так как я выполняю это в Perl, ["] должен сбежать или в чем может быть проблема?Пожалуйста, предложите мне решение

Ответы [ 2 ]

1 голос
/ 29 марта 2011
SELECT 'some address' as custodian_addr, 
  date '1970-01-01' + 1015015173/86400 as create_dt
 from dual
/

CUSTODIAN_AD CREATE_DT
------------ -------------------
some address 2002-03-01 20:39:33

Арифметика даты Oracle довольно проста - добавление 1 к дате увеличивает ее на 1 день.Таким образом, поскольку это число равно секундам, его деление на 86400 (60 * 60 * 24) приводит к тому, что это число равно количеству дней (и их долям).

0 голосов
/ 29 марта 2011

Какую ошибку вы получаете?

Ваша функция TO_CHAR не должна использовать двойные кавычки. Это должно быть

TO_CHAR(CreateDT,'SS')

Если вы помещаете что-то в двойные кавычки в Oracle, это интерпретируется как идентификатор, а не строковая константа.

...