Oracle - 在select中格式化sysdate的格式

时间:2015-10-20 14:52:10

标签: sql oracle date-formatting

我在oracle数据库中选择了一个select来返回该票证在支持组中的时间。

有时候,我有一个场景,我们将票证的日期加入了团队,但我没有时间。

为了解决这个问题,我选择了一个条件,并在组中输入日期和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';

1 个答案:

答案 0 :(得分: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 以及所需的 FORMAT MODEL 将其转换为字符串。

例如,

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