powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Странное преобразование timestamp
13 сообщений из 13, страница 1 из 1
Странное преобразование timestamp
    #39507470
Non-Grata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle 11.2.0.1.0
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table test (t1 timestamp,t2 timestamp);
insert into test values (systimestamp, systimestamp+1/3);
select to_char(t1,'HH24:MI') ct1,to_char(t2-1/8,'HH24:MI') ct2,to_char(t2-t1,'HH24:MI') ct3 from test;

Table TEST created.


1 row inserted.


CT1   CT2   CT3                        
----- ----- ---------------------------
12:22 17:22 +000000000 07:59:59.839815 



Что не так с ct3?
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507486
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-Grata,

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

  1  select dump(systimestamp) d1
  2  ,dump(systimestamp-(systimestamp-1/3)) d2
  3  ,dump(interval '8' hour) d3
  4* from dual
SQL> /

D1
-----------------------------------------------------------------------------
D2
-----------------------------------------------------------------------------
D3
----------------------------------------------------------------
Typ=188 Len=20: 225,7,8,18,9,42,16,0,208,55,19,58,3,0,5,0,0,0,0,0
Typ=190 Len=24: 0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,208,55,19,58,10,0,0,0
Typ=190 Len=24: 0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0



to_char(interval)

....
stax
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507488
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-Grata,

Код: plsql
1.
2.
3.
4.
5.
SQL> select to_char(interval '0 07:59:59.839815' DAY TO second(6)) from dual;

TO_CHAR(INTERVAL'00
-------------------
+00 07:59:59.839815



....
stax
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507564
Non-Grata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cпасибо, узнал много нового! (это я про dump и interval )) )
Только вопрос о том, как в моём случае вывести ct3 в таком же формате, как ct2 и ct1, остался открытым.

Код: plsql
1.
substr(to_char(t2-t1,'HH24:MI'),12,5)


Как-то совсем некрасиво.
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507574
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-Grata,

я мало работал с інтервал
1) timestamp -> date ...
2)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> ed
Wrote file afiedt.buf

  1  with t as (
  2  select interval '0 07:59:59.839815' DAY TO second(6) ii from dual)
  3  --
  4  select
  5    extract(day from ii) day
  6   ,extract(hour from ii) hour
  7   ,extract(minute from ii) mi
  8   ,extract(second from ii) second
  9* from t
SQL> /

       DAY       HOUR         MI     SECOND
---------- ---------- ---------- ----------
         0          7         59  59,839815



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

  1  with t as (
  2  select interval '0 07:59:59.839815' DAY TO second(6) ii from dual)
  3  --
  4  select
  5   to_char(timestamp '1962-01-05 00:00:00' + ii,'hh24:mi') h
  6* from t
SQL> /

H
-----
07:59


....
stax
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507575
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-GrataКак-то совсем некрасиво.

А "красиво" и не получится тем более если учесть что t2 - t1 может быть >= 24 часов.

SY.
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507588
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-Grata, А что хотите в итоге? Узнать сколько прошло времени между двумя timestamp ?

Разница timestamp
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507589
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-Grataвывести ct3 в таком же форматемаска ту_чар с интервалом не работает. С определенными ограничениями можно ввернуть интервал в зад
Код: plsql
1.
+timestamp '0001-01-01 00:00:00'
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507611
Non-Grata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYА "красиво" и не получится тем более если учесть что t2 - t1 может быть >= 24 часов.

А если не учитывать? У меня t1 и t2 всегда в пределах суток с 00:00 до 23:59
j2kNon-Grata, А что хотите в итоге? Узнать сколько прошло времени между двумя timestamp ?

Да, именно так. Думал, что есть стандартная функция преобразования, но боюсь, придётся действовать нестандартно.
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507639
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Non-GrataА если не учитывать? У меня t1 и t2 всегда в пределах суток с 00:00 до 23:59


Ну так stax же показал:

Код: plsql
1.
to_char(timestamp '1-1-1 0:0:0' + (t2 - t1),'hh24:mi')



или

Код: plsql
1.
to_char(date '1-1-1' + (t2 - t1),'hh24:mi')



SY.
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507654
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYNon-GrataА если не учитывать? У меня t1 и t2 всегда в пределах суток с 00:00 до 23:59


Ну так stax же показал:

Код: plsql
1.
to_char(timestamp '1-1-1 0:0:0' + (t2 - t1),'hh24:mi')




SY.
интервал чудо нежное и мало пон при ятное
если на (t2 - t1) не накладивать ограничения наверное можно и и в ору влететь

....
stax
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507676
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Не с day to second интервалом. Ты наверное намекаешь на year to month, типа:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> select date '2017-01-28' + interval '1' month from dual;

DATE'2017
---------
28-FEB-17

SQL> select date '2017-01-29' + interval '1' month from dual;
select date '2017-01-29' + interval '1' month from dual
                         *
ERROR at line 1:
ORA-01839: date not valid for month specified


SQL> 



SY.
...
Рейтинг: 0 / 0
Странное преобразование timestamp
    #39507734
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYStax,

Не с day to second интервалом. Ты наверное намекаешь на year to month, типа:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> select date '2017-01-28' + interval '1' month from dual;

DATE'2017
---------
28-FEB-17

SQL> select date '2017-01-29' + interval '1' month from dual;
select date '2017-01-29' + interval '1' month from dual
                         *
ERROR at line 1:
ORA-01839: date not valid for month specified


SQL> ъ



SY.

вообщето да
но меня и забавляет напр
INTERVAL '100-1' YEAR(3)

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


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