2015-10-20 55 views
1

我在oracle数据库中做了一个选择来返回票证在支持组中的时间。Oracle - 选择内部的sysdate的格式返回

有时,我有场景,我们有机票的日期加入了组,但我没有时间。

为了解决这个问题,我把我选择的一个条件放在组中的入口日期和sysdate之间。

问题是输出格式如下:+00 00:28:32.00000,我只需要几分钟的时间。

下面,我添加了整个查询,我想这个问题是在这个部分:

CASE 
WHEN PBTI_TEMPONOGRUPO IS NULL 
THEN (SYSDATE-(SECS_TO_DATE(PBTI_DATAENTRADAGRUPO))) 
END AS TEMPO_NO_GRUPO 

如何格式化这个输出?

查询是:

SELECT PBTI_WORKORDER_ID   AS ID_WO, 
     PBTI_IDREQUISICAO   AS ID_REQ, 
     PBTI_GRUPOSUPORTEATUAL AS GRUPO_SUP_ATUAL, 
     PBTI_GRUPOSUPORTEANTERIOR AS GRUPO_SUP_ANTERIOR, 

     CASE 
     WHEN PBTI_DATASAIDAGRUPO IS NULL 
     THEN SYSDATE 
     WHEN PBTI_DATASAIDAGRUPO IS NOT NULL 
     THEN SECS_TO_DATE(PBTI_DATASAIDAGRUPO) 
     END  AS DATA_SAIDA_GRUPO, 

     SECS_TO_DATE(PBTI_DATAENTRADAGRUPO) AS DATA_ENTRADA, 

     CASE 
     WHEN PBTI_TEMPONOGRUPO IS NULL 
     THEN (SYSDATE-(SECS_TO_DATE(PBTI_DATAENTRADAGRUPO))) 
     END  AS TEMPO_NO_GRUPO 

    FROM PBTI_TABELA_INDICADORES 
WHERE PBTI_WORKORDER_ID = 'WO0000000142585'; 

回答

0
CASE 
WHEN PBTI_DATASAIDAGRUPO IS NULL 
THEN SYSDATE 
WHEN PBTI_DATASAIDAGRUPO IS NOT NULL 
THEN SECS_TO_DATE(PBTI_DATASAIDAGRUPO) 
END 

所以CASE的输出表达式将是DATE数据类型。要获得所需格式的输出,请使用TO_CHAR以及所需的格式模型将其转换为字符串。

例如,

SQL> SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') only_date FROM DUAL; 

ONLY_DATE 
---------- 
2015-10-20 

SQL> SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') only_time FROM DUAL; 

ONLY_TIME 
--------- 
20:29:54 
+0

韩国社交协会拉利特。也许我已经表达了自己的不足。我试图在系统日期和我在系统中的日期之间做出区分(这是在几秒钟之内)。这一次,重新表达了一部分,但结果还不确定。我做的是:THEN ROUND((((SYSDATE - DATE'1969-12-31')* 24 * 60 * 60) - (PBTI_DATAENTRADAGRUPO))/ 60) – Barcat

+0

我试图做sysdate - timestamp,但格式给出错误。而减法是错误的。 =( – Barcat

+0

@Barcat两个日期之间的差异是** NUMBER **天,你不能'sysdate -t​​imestamp'因为它们是不同的数据类型''timestamp'是'date'数据类型的扩展。我无法得到您的要求,如果您在日期之间做差异,结果是您转换为秒数的天数,现在有什么问题? –