sql - 如何将计算列的数字格式转换为时间(hh:mm:ss)格式,sql查询
问题描述
首先,我为糟糕的英语感到抱歉,但我会尽量让人们理解。
我正在尝试创建一个 Oracle 数据库 SQL 查询,它减去两个现有列的日期时间值,我使用下面显示的指令管理了如何执行此操作,但我创建的列 TEMPO 以 NUMBER 格式返回。
SELECT M.NUMOS, M.CODFUNCOS, M.DTINICIOOS, M.DTFIMSEPARACAO,
M.DTFIMSEPARACAO - M.DTINICIOOS AS TEMPO
FROM PCMOVENDPEND M
WHERE DTFIMSEPARACAO IS NOT NULL
AND DATA >= SYSDATE-1
输出就在那里。
我需要将列 TEMPO 格式转换为 TIME 作为 'hh:mm:ss',如果某些结果经过 24 小时,它会像 32:01:20 一样不断添加(就像 [hh]:mm:ss Excel 格式一样) .
我尝试了一些类似下面的指令,但它返回ORA-00932 错误,数据类型不一致,预期 TIME 并返回 DATE JULIAN(我不知道它是否是确切的错误描述,我的 DBX 是葡萄牙语),不幸的是我可以如果有帮助,请不要对根表进行任何更改。
SELECT M.NUMOS, M.CODFUNCOS, M.DTINICIOOS, M.DTFIMSEPARACAO,
CAST(M.DTFIMSEPARACAO - M.DTINICIOOS AS TIME) AS TEMPO
FROM PCMOVENDPEND M
WHERE DTFIMSEPARACAO IS NOT NULL
AND DATA >= SYSDATE-1
无论如何,列 TEMPO 格式是 TIME 非常重要,因为我将使用 sql 查询作为 PowerBi Direct Query 的指令,并且由于数据太大,我无法导入数据库以与 PowerQuery 一起使用。
感谢大家!
解决方案
在 Littlefoots 的帮助下,我设法将列转换为所需的格式,如下所示:
CREATE OR REPLACE FUNCTION WMS_CORINGA(TEMPO NUMBER)
RETURN VARCHAR2 IS
HORA NUMBER;
MINUTO NUMBER(2);
SEGUNDO NUMBER(2);
TEMPOABS NUMBER;
BEGIN
IF TEMPO <> 0 THEN
TEMPOABS := ABS(TEMPO);
HORA := TRUNC(TEMPOABS*24);
MINUTO := TRUNC(((TEMPOABS*24)-HORA) * 60);
SEGUNDO := ((((TEMPOABS*24)-HORA) * 60) - MINUTO) * 60;
RETURN TO_CHAR(HORA, 'FM9999900') || ':'|| TO_CHAR(MINUTO, 'FM00') || ':' || TO_CHAR (SEGUNDO, 'FM00');
ELSE
RETURN '';
END IF;
END;
SELECT M.NUMOS, M.CODFUNCOS, M.DTINICIOOS, M.DTFIMSEPARACAO,
WMS_CORINGA(M.DTFIMSEPARACAO - M.DTINICIOOS) AS TEMPO_EM_SEPARACAO
FROM PCMOVENDPEND M
WHERE DTFIMSEPARACAO IS NOT NULL
AND DATA>= SYSDATE-1
但我无法建立 PowerBI 连接,输出为详细信息:“当前不支持此本机数据库查询。”
总之,学到了很多。
推荐阅读
- c - 如何在C中读取混合数据的文件?
- ruby-on-rails - 如何在 searchkick 中编写布尔查询
- javascript - 试图找到一种用我的数组显示图像的方法
- android - PlatformException(ERROR_INVALID_EMAIL, 电子邮件地址格式错误。, null)
- c# - c# foreach loop list with class
- javascript - Bootstrap 需要 popper.js,尽管在 Angular 中使用 bundle
- google-chrome - 使用 Web Audio API 时不同的音量级别不起作用
- amazon-web-services - CloudFormation 模板不选择 KeyPair
- c++ - 何时出现 UB,因为 ADL 在实例化时未找到最佳重载匹配?
- python - 从未等待过的不和谐python机器人