powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Требуется преобразовать текстовую строку в число
6 сообщений из 31, страница 2 из 2
Требуется преобразовать текстовую строку в число
    #39468887
CrazyGooDvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..CrazyGooDvin,

to_date(sysdate)

из-за неявного перобразование получим шо-то типа
TO_DATE(TO_CHAR(SYSDATE))
тоесть дату в строку, а строку обратно в дату

похожая история и с to_number(count(*))

.....
stax

там надо ограничить результат по датам относительно текущий вчерашний день с 00-00-00 по сегодняшний день 00-00-00, если есть другой способ так сделать хотел бы услышать.
про to_number(count(*)) знаю, это дописал потому что думал, что нужно сделать преобразование что бы деление сработало, но это не помогло.
Все еще не знаю как вывести такой результат, утыкаюсь в логику которой я не знаю
...
Рейтинг: 0 / 0
Требуется преобразовать текстовую строку в число
    #39468894
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazyGooDvin,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with ticket as(
select 'ИНЦИДЕНТ' CLASS, sysdate -2 REPORTDATE, sysdate    actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate -1 REPORTDATE, sysdate -1 actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate    REPORTDATE, sysdate -1 actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate -2   REPORTDATE, sysdate -1    actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate -3   REPORTDATE, sysdate    actualfinish from dual )

select count( case when t.REPORTDATE between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD') then 1 end)/count( case when t.actualfinish between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD') then 1 end) cnt

from ticket t 
where CLASS = 'ИНЦИДЕНТ' 
   and (t.REPORTDATE between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD')
      or t.actualfinish between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD')
         )



Работает
...
Рейтинг: 0 / 0
Требуется преобразовать текстовую строку в число
    #39468895
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazyGooDvin[.. утыкаюсь в логику которой я не знаю
элементарно, иногда думать и не преобразовывать параноидально уже число в число же и т.п.
...
Рейтинг: 0 / 0
Требуется преобразовать текстовую строку в число
    #39468907
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazyGooDvinтам надо ограничить результат по датам относительно текущий вчерашний день с 00-00-00 по сегодняшний день 00-00-00, если есть другой способ так сделать хотел бы услышать.

between c датами неудобно работать, я пользую >=, <

between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD')
означает весь день за вчера и первая секунда сегодня (больше сутки)

зы
я из-за лентяйства маску 'DDD' тож не пишу (trunc(sysdate))

.....
stax
...
Рейтинг: 0 / 0
Требуется преобразовать текстовую строку в число
    #39469156
CrazyGooDvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXLCrazyGooDvin,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with ticket as(
select 'ИНЦИДЕНТ' CLASS, sysdate -2 REPORTDATE, sysdate    actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate -1 REPORTDATE, sysdate -1 actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate    REPORTDATE, sysdate -1 actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate -2   REPORTDATE, sysdate -1    actualfinish from dual union all
select 'ИНЦИДЕНТ' CLASS, sysdate -3   REPORTDATE, sysdate    actualfinish from dual )

select count( case when t.REPORTDATE between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD') then 1 end)/count( case when t.actualfinish between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD') then 1 end) cnt

from ticket t 
where CLASS = 'ИНЦИДЕНТ' 
   and (t.REPORTDATE between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD')
      or t.actualfinish between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD')
         )



Работает

Это работает, а верхняя часть это для подставки результатов? Мне же нужно только с select count?

авторCrazyGooDvin

[.. утыкаюсь в логику которой я не знаю

элементарно, иногда думать и не преобразовывать параноидально уже число в число же и т.п.
Согласен, простите за нубизм...
авторCrazyGooDvin

там надо ограничить результат по датам относительно текущий вчерашний день с 00-00-00 по сегодняшний день 00-00-00, если есть другой способ так сделать хотел бы услышать.


between c датами неудобно работать, я пользую >=, <

between trunc (sysdate -1,'DDD') and trunc (sysdate,'DDD')
означает весь день за вчера и первая секунда сегодня (больше сутки)

зы
я из-за лентяйства маску 'DDD' тож не пишу (trunc(sysdate))

.....
stax
без DDD не ограничишь до нулей время, а надо...
...
Рейтинг: 0 / 0
Требуется преобразовать текстовую строку в число
    #39469190
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrazyGooDvinбез DDD не ограничишь до нулей время, а надо...
Код: plsql
1.
2.
3.
4.
5.
SQL> select to_char(trunc(sysdate),'dd.mm.yyyy hh24:mi:ss') d from dual;

D
-------------------
09.06.2017 00:00:00



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


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