Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Timestamp разница + trunc  [new]
англикот
Guest
Добрый день

У меня есть sql запрос в ктором одна из колонок это timestamp1-timestamp2.
результат выглядит так +000000000 00:02:02.321014

как лучше всего отрезать +000000000 и милиссекунды чтобы в итоге получить
00:02:02

Спасибо
27 окт 11, 19:55    [11512144]     Ответить | Цитировать Сообщить модератору
 Re: Timestamp разница + trunc  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
англикот
Добрый день

У меня есть sql запрос в ктором одна из колонок это timestamp1-timestamp2.
результат выглядит так +000000000 00:02:02.321014

как лучше всего отрезать +000000000 и милиссекунды чтобы в итоге получить
00:02:02

Спасибо

например, так
with t as (select interval '+000000000 00:02:02.321014' day to second as i
             from dual)
select i,regexp_substr(i,'..:..:..') r from t;
27 окт 11, 20:10    [11512192]     Ответить | Цитировать Сообщить модератору
 Re: Timestamp разница + trunc  [new]
Глупый Телевизор
Member

Откуда: телевизор больше не смотреть (с)
Сообщений: 679
orawish
англикот
Добрый день

У меня есть sql запрос в ктором одна из колонок это timestamp1-timestamp2.
результат выглядит так +000000000 00:02:02.321014

как лучше всего отрезать +000000000 и милиссекунды чтобы в итоге получить
00:02:02

Спасибо

например, так
with t as (select interval '+000000000 00:02:02.321014' day to second as i
             from dual)
select i,regexp_substr(i,'..:..:..') r from t;
Или любым известным способом привести к date и к ней уже применить форматную маску.
with t as (select interval '+000000000 00:02:02.321014' day to second as i
             from dual)
select i,
regexp_substr(i,'..:..:..') r,
to_char(date'2011-01-01'+i,'hh24:mi:ss') y,
to_char(to_date(1,'j')+i,'hh24:mi:ss') z
from t;
27 окт 11, 22:34    [11512739]     Ответить | Цитировать Сообщить модератору
 Re: Timestamp разница + trunc  [new]
AmKad
Member

Откуда:
Сообщений: 5222
англикот,

with t as (select interval '+000000000 14:02:06.321014' day to second as i from dual)
select 
extract(day    from i) d, 
extract(hour   from i) h, 
extract(minute from i) m, 
extract(second from i) s,
trunc(extract(second from i)) s_trunc
from t;

D                      H                      M                      S                      S_TRUNC                
---------------------- ---------------------- ---------------------- ---------------------- ---------------------- 
0                      14                     2                      6.321014               6             
далее - конкатенация.
27 окт 11, 23:08    [11512904]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить