powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / формат вывода переменной типа interval в to_char()
12 сообщений из 12, страница 1 из 1
формат вывода переменной типа interval в to_char()
    #37804279
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare 
  l_int1 interval day(0) to second(0);
  l_int2 interval day(0) to second(0);  
begin
  l_int1 := to_dsinterval('0 23:12:00');
  l_int2 := to_dsinterval('0 00:59:00');  
  dbms_output.put_line(to_char(l_int1+l_int2,'hh:mm'));
end;    



Выводит результат в виде "+000001 00:11:00.000000000"
Вопрос существуют ли предопределенные функции для вывода интервала в нужном виде ?
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #37804306
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casufi,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare 
  l_int1 interval day(0) to second(0);
  l_int2 interval day(0) to second(0);  
begin
  l_int1 := to_dsinterval('0 23:12:00');
  l_int2 := to_dsinterval('0 00:59:00');  
  dbms_output.put_line(to_char(l_int1+l_int2,'hh:mm'));
  dbms_output.put_line(extract(hour   from l_int1+l_int2)
                ||':'||extract(minute from l_int1+l_int2));
end;
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #37804334
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casufi,

кстати, в датов-ском формате оракловом mm это не минуты, а месяцы, а hh - таки часы, но не в 24 часовом, а в 12 часовом представлении
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #37804364
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishCasufi,

Код: plsql
1.
2.
3.
4.
...
  dbms_output.put_line(extract(hour   from l_int1+l_int2)
                ||':'||extract(minute from l_int1+l_int2));
end;


Дни потерялись, придется что то вроде этого писать только с кейсами.
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #37804380
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CasufiorawishCasufi,

Код: plsql
1.
2.
3.
4.
...
  dbms_output.put_line(extract(hour   from l_int1+l_int2)
                ||':'||extract(minute from l_int1+l_int2));
end;


Дни потерялись, придется что то вроде этого писать только с кейсами.
что куда потерялось? выводИте, что хотите.
Код: plsql
1.
extract(day ..
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
формат вывода переменной типа interval в to_char()
    #39517244
feagoooor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Casufi,

Код: plsql
1.
2.
select cast(numtodsinterval((sysdate+1/24)-sysdate,'DAY') as interval day(0) to second(1)) from dual
+0 01:00:00.0
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #39517287
feagooor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
feagoooor,

Прошу прощения
Код: plsql
1.
2.
3.
4.
with t as (select cast(numtodsinterval((sysdate+1/24)-sysdate,'DAY') as interval day(0) to second(1)) intr from dual) 
select substr(cast(intr as varchar2(50)),10,13) intr from t

+0 01:00:00.0
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #39517671
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagooorfeagoooor,

Прошу прощения
Код: plsql
1.
2.
3.
4.
with t as (select cast(numtodsinterval((sysdate+1/24)-sysdate,'DAY') as interval day(0) to second(1)) intr from dual) 
select substr(cast(intr as varchar2(50)),10,13) intr from t

+0 01:00:00.0


ну, да. это то, что тут красным..
Код: plsql
1.
2.
3.
4.
5.
with t as (select cast(numtodsinterval((sysdate+1/24)-sysdate,'DAY') as interval day(0) to second(1)) intr from dual) 
select --substr(
cast(intr as varchar2(50)--),10,13
) 
intr from t;


INTERVAL' +0 01:00:00.0 'DAY(0)TO SECOND(1)
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #39551143
feagoooor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, всё верно.
Мне кажется такой вариант компактнее, нормальной встроенной функции для обрезания кучи 0 в начале и конце не нашёл. Extract нормальным вариантом не считаю
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #39551206
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagoooor,

Код: plsql
1.
2.
3.
4.
5.
SQL> select rtrim('+0 01:00:00.0',':.0') r from dual;

R
-----
+0 01



+ltrim

....
stax
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #39551482
feagooor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Так формат какой-то странный у тебя получается
Желание то сделать из
+000000000 01:00:00.000000000
+0 01:00:00.00

и по хорошему для этого после преобразования
Код: plsql
1.
select cast(numtodsinterval((sysdate+1/24)-sysdate,'DAY') as interval day(0) to second(1)) from dual


сделать бы просто to_char.
Но to_char на это выржание выдаёт ошибку
При этом, сам запрос без преобразование выводит все в корректном виде
...
Рейтинг: 0 / 0
формат вывода переменной типа interval в to_char()
    #39552037
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feagooor,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2  select numtodsinterval((sysdate+1/24)-sysdate,'DAY') i from dual
  3  )
  4* select to_char (cast(i as INTERVAL  DAY(1) TO SECOND(2))) s from t
SQL> /

S
---------------
+0 01:00:00.00



ps
согласен, to_char перемудрили с форматной маской
хотя на диаграмке и формат и нлс есть

TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

.....
stax
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / формат вывода переменной типа interval в to_char()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]