我有一个user_id
字段和time
字段。 time
字段为timestamp
数据类型。
用户ID可能有很多日志时间。
我想找到用户的小时和分钟之间的总和。
我已设法转换为小时和分钟,但我无法总结每个ID的小时数。 以下是我使用的代码。
select user_id, to_char (time_loged)as "Totalhours "
from logtable
答案 0 :(得分:1)
这是使用to_char()或to_date()转换时间戳的Oracle示例。您可以删除日期格式,只留下时间格式,只将时间分为几分钟,几秒钟,然后将它们作为数字与to_number()相加......
SELECT to_char(to_timestamp ('2013-02-14 10:07:47.000' , 'YYYY-MM-DD HH24:MI:SS.FF'),'DD-MON-YYYY HH24:MI:SS') start_date
FROM dual
/
SQL> 14-FEB-2013 10:07:47
SELECT to_date(to_char(to_timestamp ('2013-02-14 10:07:47.000' , 'YYYY-MM-DD HH24:MI:SS.FF'),'DD-MON-YYYY HH24:MI:SS'), 'DD-MON-YYYY HH24:MI:SS') start_date
FROM dual
/
SQL> 2/14/2013 10:07:47 AM
SELECT to_char(to_timestamp ('2013-02-14 10:07:47.000' , 'YYYY-MM-DD HH24:MI:SS.FF'),'HH24') start_date
FROM dual
/
SQL> 10
SELECT to_number(to_char(to_timestamp ('2013-02-14 10:07:47.000' , 'YYYY-MM-DD HH24:MI:SS.FF'),'MI')) minutes
FROM dual
/
SQL> 7
在您的情况下,数据已经是时间戳,而我必须在我的代码中将日期转换为to_timestamp。只需忽略to_timestamp convesion并使用to_char(),to_number()...
我的所有例子都经过测试。复制并粘贴最后一个示例,以查看与您的代码的区别。阅读我的评论......