2015-10-20 14 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'數據類型的擴展。我無法得到您的要求,如果您在日期之間做差異,結果是您轉換爲秒數的天數,現在有什麼問題? –