问题描述
我在要显示为17:04:43的列中有此值 (170443)。我已经写了这段代码来实现这一点,但看到错误ORA-01850: 小时必须在0到23之间。解决方案是什么?
SELECT CASE WHEN LVUPMT= 0 THEN NULL
ELSE
TO_TIMESTAMP(substr(LVUPMT,1,2) ||':'||substr(LVUPMT,3,2) ||':'||substr(LVUPMT,5,2), HH24:MI:SS')
END AS DDATE
FROM PRODDTA.F07620
WHERE LVAN8 = 102366; 专家解答
我不熟悉JD Edwards。因此无法提供具体帮助。
传递170443和 “它为我工作”:
所以想必你正在返回具有不同值的行...
您需要查看substr (llupmt,1,2) 返回什么。
PS-如果您只想显示时间,to_timestamp是错误的功能...这将把值转换为带有今天的日期和提供的时间戳:
如果这只是为了显示,只需格式化数字...
传递170443和 “它为我工作”:
select CASE WHEN '170443' = 0 THEN NULL
ELSE
TO_TIMESTAMP(substr('170443',1,2) ||':'||substr('170443',3,2) ||':'||substr('170443',5,2), 'HH24:MI:SS')
END AS DDATE
from dual;
DDATE
01-MAY-2019 17.04.43.000000000 所以想必你正在返回具有不同值的行...
您需要查看substr (llupmt,1,2) 返回什么。
PS-如果您只想显示时间,to_timestamp是错误的功能...这将把值转换为带有今天的日期和提供的时间戳:
select to_timestamp ( '12:34:56', 'HH24:MI:SS' ) , sysdate
from dual;
TO_TIMESTAMP('12:34:56','HH24:MI:SS') SYSDATE
01-MAY-2019 12.34.56.000000000 14-MAY-2019 14:53:11 如果这只是为了显示,只需格式化数字...
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




