Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Временной интервал в секундах  [new]
Саблин Игорь
Guest
Не подскажет ли кто - как в запросе получить разницу в секундах между двумя столбцами типа DATE?
19 авг 02, 13:53    [47435]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
killed
Member

Откуда: Moscow
Сообщений: 3526
select (end_date - start_date)*3600*24 from table
19 авг 02, 14:18    [47444]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Саблин Игорь
Guest
Благодарствую!
19 авг 02, 14:53    [47458]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
а как насчёт 10g? Тут же интервалы ввели, теперь разность дат - тип interval...
26 дек 07, 13:17    [5098462]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Phoenix666
а как насчёт 10g? Тут же интервалы ввели, теперь разность дат - тип interval...


интервалы ввели в 9i
26 дек 07, 13:18    [5098467]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
Ну пусть в 9i). Как теперь быть?
26 дек 07, 13:23    [5098496]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Dimka9
Member

Откуда: Владивосток
Сообщений: 1851
Phoenix666
Как теперь быть?

есть какие-то сложности?
> select (sysdate- to_date('26-12-2007','dd-mm-yyyy'))*24*3600 from dual;

(SYSDATE-TO_DATE('26-12-2007','DD-MM-YYYY'))*24*3600
----------------------------------------------------
                                               73615

> select (sysdate- to_date('27-12-2007','dd-mm-yyyy'))*24*3600 from dual;

(SYSDATE-TO_DATE('27-12-2007','DD-MM-YYYY'))*24*3600
----------------------------------------------------
                                              -12729

> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
26 дек 07, 13:30    [5098544]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Phoenix666
Ну пусть в 9i). Как теперь быть?


SELECT (sysdate - (sysdate - 1)) * 24 * 60 * 60
FROM dual


--------
86400


SELECT *
FROM v$version
WHERE rownum = 1

BANNER
---------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod

в чем вопрос?
26 дек 07, 13:33    [5098567]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
да, ваши примеры работают, вот только мой запрос не работает, когда над результатом аггрегат нужно делать:

select table_name,
start_time
3600 * sum(num_rows) / sum(end_time - start_time) as speed_hour
from ...

не берётся сумма от интервала, кричит что число требуется, а не интервал((
26 дек 07, 13:38    [5098606]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
"CORE 10.2.0.3.0 Production"
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
26 дек 07, 13:39    [5098611]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
ой, блин, дело хуже - у меня типы timestamp... как бы их в секунды перегнать?
26 дек 07, 13:41    [5098623]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Dimka9
Member

Откуда: Владивосток
Сообщений: 1851
Phoenix666
кричит что число требуется, а не интервал((

vb5@vbtst> select sysdate/(sysdate-(sysdate-1)) from dual;
select sysdate/(sysdate-(sysdate-1)) from dual
       *
ошибка в строке 1:
ORA-00932: несовместимые типы данных: ожидается NUMBER, получено DATE
так?

ты оъясни смысл проделанного
26 дек 07, 13:44    [5098652]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
На запрос:
select table_name,
start_time
3600 * sum(num_rows) / sum(end_time - start_time) as speed_hour
from test_table;

в котором start_time и end time имеют тип timestamp, выдаётся ошибка ORA932- inconsistent datatypes :
expected NUMBER got INTERVAL DAT TO SECOND.

а мне всего-то разницу в секундах получить надо(((
26 дек 07, 13:50    [5098701]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Dimka9
Member

Откуда: Владивосток
Сообщений: 1851
Phoenix666
как бы их в секунды перегнать?

а как ты даты в секунды перегоняешь?

перегони мне 12 декабря 2007 года полдень в секунды
26 дек 07, 13:51    [5098709]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
у меня такой вопрос и стоит, либо перегнать интервал в секунды, либо таймстемп в секунды. В этом-то у меня и сложность...
26 дек 07, 13:55    [5098745]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
Секунды получаю теперь так:
to_char(end_time, 'SSSSS') - to_char(start_time, 'SSSSS')...
пока проверяю результат...
26 дек 07, 14:02    [5098810]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
ну всё отлично, спасибо...

Вот только вопрос открыт пока - как тип INTERVAL DAY TO SECOND перевести к секундам))
26 дек 07, 14:06    [5098854]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
т.е. в NUMBER секунд)
26 дек 07, 14:07    [5098861]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Phoenix666
либо таймстемп в секунды. В этом-то у меня и сложность...


Только в этом ? Ну-ка, скажи нам, от какого момента времени ты TIMESTAMP в секунды
будешь перегонять ? От Рождества Христова ?
26 дек 07, 14:11    [5098894]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
Таймстемп в секи я обычно от 01/01/1970 перегоняю))
26 дек 07, 14:12    [5098903]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Phoenix666

Вот только вопрос открыт пока - как тип INTERVAL DAY TO SECOND перевести к секундам))


EXTRACT
26 дек 07, 14:17    [5098942]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Phoenix666
Guest
с екстрактом фигня такая, что нужно вытаскивать секунды, потом вытаскивать минуты * 60, потом вытаскивать дни * 86400...и т.д.. Неужели проще конструкции нет?
26 дек 07, 14:42    [5099149]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
Phoenix666
Таймстемп в секи я обычно от 01/01/1970 перегоняю))

Зря. Имеет смысл заменять обычаи разумом там, где это возможно.
26 дек 07, 15:25    [5099501]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Phoenix666
Неужели проще конструкции нет?
SQL> SELECT to_char(dt, 'yyyy-mm-dd hh24:mi:ss') AS ch
  2    FROM (SELECT CAST(ts AS DATE) AS dt
  3            FROM (SELECT to_timestamp('2007-12-30 12:30:40', 'yyyy-mm-dd hh24:mi:ss') AS ts
  4                    FROM dual))
  5  /
 
CH
-------------------
2007-12-30 12:30:40
Предлагаю кастить таймштампы к датам, а затем уж и разницу вычислять.
Конечно, если доли секунд не важны
26 дек 07, 15:33    [5099570]     Ответить | Цитировать Сообщить модератору
 Re: Временной интервал в секундах  [new]
Дубовая голова
Member [заблокирован]

Откуда: с цепи сорвался
Сообщений: 1821
Паганель
Предлагаю кастить таймштампы к датам


Для этого даже CAST необязателен:

SQL> select systimestamp from dual;

SYSTIMESTAMP
---------------------------------------------------------------------------
26-DEC-07 03.36.41.705000 PM +03:00

SQL> select systimestamp + 0 from dual;

SYSTIMESTAMP+0
--------------------
26-DEC-2007 15:36:45
26 дек 07, 15:36    [5099595]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить