Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 NUMTODSINTERVAL наоборот  [new]
Dummy_man
Guest
Подскажите, пзл., SQL функцию f такую что f(NUMTODSINTERVAL(x, 'second'))=x. Короче, функцию обратную NUMTODSINTERVAL.
С помощью EXTRACT делать лениво.

select
    extract(second from val) +
    extract(minute from val) * 60 +
    extract(hour from val) * 3600 +
    extract(day from val) * 86400 sec
from
 (
  select
    NUMTODSINTERVAL(1230978.234, 'second') val
  from dual
 );


       SEC
----------
1230978,23
27 дек 06, 21:28    [3590293]     Ответить | Цитировать Сообщить модератору
 Re: NUMTODSINTERVAL наоборот  [new]
Elic
Member

Откуда:
Сообщений: 29990
Dummy_man
Подскажите функцию обратную NUMTODSINTERVAL
STFF Как из интервала получить кол-во секунд?
28 дек 06, 09:22    [3591020]     Ответить | Цитировать Сообщить модератору
 Re: NUMTODSINTERVAL наоборот  [new]
Dummy_man
Guest
Опа!

select
  A1-B1 A,
  B1-A1 B,
  A1,
  B1,
  substr(A1-B1, 1, 1) S1,
  substr(B1-A1, 1, 1) S2
from
(
  select
    cast('10.10.05 03:01:28,831' as timestamp) A1,
    cast('10.10.05 03:01:28,707' as timestamp) B1
  from dual
  union all
  select
    cast('10.10.05 03:01:28,707' as timestamp) A1,
    cast('10.10.05 03:01:28,831' as timestamp) B1
  from dual
)
/

A                       B                       A1                    B1                    S S
----------------------- ----------------------- --------------------- --------------------- - -
+000000000 00:00:00.124 +000000000 00:00:00.170 10.10.05 03:01:28,831 10.10.05 03:01:28,707 + -
000                     967                     000                   000

+000000000 00:00:00.170 +000000000 00:00:00.124 10.10.05 03:01:28,707 10.10.05 03:01:28,831 - +
967                     000                     000                   000

В колонках A и B знак интервала +, а на самом деле, знаки разные!

SQL*Plus: Release 10.1.0.4.2 - Production

select
  to_char(A1-B1) A,
  to_char(B1-A1) B,
  A1,
  B1,
  substr(A1-B1, 1, 1) S1,
  substr(B1-A1, 1, 1) S2
from
(
  select
    cast('10.10.05 03:01:28,831' as timestamp) A1,
    cast('10.10.05 03:01:28,707' as timestamp) B1
  from dual
  union all
  select
    cast('10.10.05 03:01:28,707' as timestamp) A1,
    cast('10.10.05 03:01:28,831' as timestamp) B1
  from dual
)
/

A                       B                       A1                    B1                    S S
----------------------- ----------------------- --------------------- --------------------- - -
+000000000 00:00:00.124 -000000000 00:00:00.124 10.10.05 03:01:28,831 10.10.05 03:01:28,707 + -
000                     000                     000                   000

-000000000 00:00:00.124 +000000000 00:00:00.124 10.10.05 03:01:28,707 10.10.05 03:01:28,831 - +
000                     000                     000                   000
28 дек 06, 14:46    [3593258]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить