Формат времени в датагрид

У меня есть вопрос... как я могу рассчитать разницу между sysdate и столбцом с именем "время создания"? Вот часть SQL (я использую базу данных Oracle):

$g->select_command = "select c.case_id as \"NGM ID\",   
       s.NE_PRIORITAET as \"NE Prio\",
       case substr(s.NE_ID, 2,1)
         when '1' then 'Nord'
         when '2' then 'Nord' 
         when '3' then 'Ost'
         when '4' then 'Ost'
         when '5' then 'Mitte'
         when '6' then 'West'
         when '7' then 'Süd'
         when '8' then 'Mitte'
         when '9' then 'Süd'
         else          'Error'
       end as \"Region\",         
       c.STATUS_NGM as \"NGM Status\",
       s.AUFTRAG as \"Auftrag\",
       s.NE_ID as \"NE ID\",
       s.STATUS as \"SAP Status\",
       substr(to_char(to_timestamp(Sysdate, 'YYYY/MM/DD HH24:MI:SS') - to_timestamp(s.CREATION_TIME, 'YYYY/MM/DD HH24:MI:SS'), 'YYYY/MM/DD HH24:MI:SS'), 8) as \"Diff Beginn Sap Ende\",
       case trim(s.KATEGORIE)
         when '1' then 'INSLA'
         when '2' then 'OUTSLA'
         else          s.KATEGORIE
       end as \"SLA\",
       c.CREATION_TIME as \"NGM Creation Time\",

2 ответа

Если вы хотите получить разницу между двумя датами в днях, вы можете просто использовать операцию вычитания, например так:

with s as (
  select to_date('2014-01-01', 'YYYY-MM-DD') CREATION_TIME from dual
)
select sysdate - s.CREATION_TIME
  from s

DIFF
--------------
226.6314236111

В Oracle есть два разных типа данных для вычитания дат и временных отметок. Расстояние между двумя типами данных DATE - это число, где единица обозначает день. Расстояние между двумя типами данных TIMESTAMP - ИНТЕРВАЛЬНЫЙ ДЕНЬ ВТОРОГО. Это тип данных, подготовленный для визуализации в формате дней: часов: минут: секунд.

select sysdate-to_date('2014.08.15','YYYY.MM.DD') as date_type
     , systimestamp - to_timestamp('2014.08.15','YYYY.MM.DD') as ts_type
     , dump(sysdate-to_date('2014.08.15','YYYY.MM.DD')) as date_datatype
     , dump(systimestamp - to_timestamp('2014.08.15','YYYY.MM.DD')) as ts_datatype
  from dual;

 DATE_TYPE
----------
TS_TYPE
---------------------------------------------------------------------------
DATE_DATATYPE
--------------------------------------------------------------------------------
TS_DATATYPE
--------------------------------------------------------------------------------
,972719907
+000000000 23:20:43.608000
Typ=14 Len=8: 0,0,0,0,75,72,1,0
Typ=190 Len=24: 0,0,0,0,23,0,0,0,20,0,0,0,43,0,0,0,0,88,61,36,10,0,0,0
Другие вопросы по тегам