我想知道在Oracle中将分钟转换为hh / mi / ss格式的查询。我已经在很多论坛上看到过很多相同的问题,但没有什么能帮助我得到确切的结果。< / p>
我使用的查询 - 从双重选择to_char(to_date(mod(100,60),&#39; mi&#39;),&#39; hh / mi / ss&#39;); 但我不知道如何获得小时值。因为mod函数只返回余数,我不知道如何取出商部分并替换为小时字段。
答案 0 :(得分:0)
我想有两种存储方式&#34;分钟&#34;在Oracle数据库中 - 您可以将它们存储在数据类型为INTERVAL DAY TO SECOND
的字段中,也可以将它们存储在NUMBER
中。最简单的处理方法是INTERVAL
- 在这种情况下,TO_CHAR
函数会将值转换为SDD HH:MM:SS.FFFFFF
形式的字符串,其中&#39; S&#39;是标志(&#39; +&#39;或&#39; - &#39;因为间隔可以是正数或负数),DD
=天,HH
=小时,&#39 ; MM&#39; =分钟,&#39; SS&#39; =秒,&#39; FFFFFF&#39; =分数;因此,要获得HH:MI:SS
我们需要做的就是使用SUBSTR
函数,如
SUBSTR(TO_CHAR(I_VAL), 5, 8)
其中I_VAL
是INTERVAL DAY TO SECOND
值。
如果要转换的值在数字字段中,由于我们必须计算单个字段值,然后将前一个字段减去作为获取下一个字段的一部分,它会变得有点混乱。但是,由于存储的值是几分钟而不是几秒,因此并不是特别困难:
create table TST (N_VAL NUMBER,
I_VAL INTERVAL DAY TO SECOND);
INSERT INTO TST(N_VAL, I_VAL) VALUES (666, INTERVAL '666' MINUTE);
SELECT N_VAL,
TRUNC(N_VAL/60) AS HOURS,
N_VAL-(TRUNC(N_VAL/60) * 60) AS MINUTES,
0 AS SECONDS,
TO_CHAR(I_VAL),
SUBSTR(TO_CHAR(I_VAL), 5, 8) AS HMS_FROM_INTERVAL
FROM TST;
祝你好运。