首页 新闻 搜索 专区 学院

MSsqlServer数据库里如何计算得到08:43这种格式的时间数据

-1
悬赏园豆:20 [已解决问题] 解决于 2015-02-04 17:19

这是这个题目:

我自己尝试了写了很多但无法实现。这是我的代码:你可以测试一下。

select ta.[user],(DATEDIFF(mi,ta.time,tb.time)) from (select * from T1 where T1.operate='Login') as ta inner join (select * from T1 where T1.operate='Logout') as tb

on ta.[user]=tb.[user]

---------------------------------

另外一种格式:

select ta.[user], cast(datediff(hour, ta.time, tb.time) as varchar) + ':' + cast(DATEDIFF(MINUTE, ta.time, tb.time) as varchar)
from
 (select [user], [time] from T1 where [operate] = 'login') as ta
 inner join
 (select [user], [time] from T1 where [operate] = 'logout') as tb
 on ta.[user] = tb.[user];

我无法得到像08:00或者08:43和07:35等,这种格式的用户在线时长。

datediff的结果是总在线的分钟或者秒数。

希望大家给个思路。很着急!

荆棘人的主页 荆棘人 | 初学一级 | 园豆:173
提问于:2013-10-13 20:49
< >
分享
最佳答案
0
select convert(varchar, convert(datetime, datediff(SS, '2010-08-10 08:00:59', '2010-08-10 16:09:01')/convert(decimal,86400)), 8)

--08:08:02
收获园豆:10
邀月 | 高人七级 |园豆:25339 | 2013-10-22 09:31

不好意思,我在msdn问道答案了,谢谢你。

荆棘人 | 园豆:173 (初学一级) | 2013-10-26 22:33
其他回答(4)
0

我很奇怪,为什么要用SQL给写出来,难不成代码中不能写么,代码中写应该比SQL执行速度快吧

雾静 | 园豆:561 (小虾三级) | 2013-10-13 22:02

这是面试题,不能改要求。

支持(0) 反对(0) 荆棘人 | 园豆:173 (初学一级) | 2013-10-26 22:32
-1
DECLARE @st DATETIME=GETDATE(),@et DATETIME='2013-10-13 23:55:12'

SELECT CONVERT(VARCHAR(5),@et-@st,114)

你看看吧~~~

幻天芒 | 园豆:36594 (高人七级) | 2013-10-13 22:40
0

需求甚是奇怪

空明流光 | 园豆:48 (初学一级) | 2013-10-14 08:39

这是面试题,不能改要求。

支持(0) 反对(0) 荆棘人 | 园豆:173 (初学一级) | 2013-10-26 22:32

@荆棘人: 用datepart函数可以取到时间的时分

支持(0) 反对(0) 空明流光 | 园豆:48 (初学一级) | 2013-10-27 08:40
0

试试这样

DECLARE  @data table ([user] varchar(200), operate varchar(200), [time] datetime)

INSERT into @data
VALUES ('LiMing', 'Login', '2010-10-24 8:03'),
('WangYi', 'Login', '2010-10-24 8:14'),
('LiMing', 'Logout', '2010-10-24 16:14'),
('WangYi', 'Logout', '2010-10-24 16:44')

select t1.[user],
CONVERT(varchar(12), DATEADD(ms, DATEDIFF(ms, (select max([time]) from @data t where operate = 'Login' And t.[user] = t1.[user]), (select max([time]) from @data t where operate = 'Logout' And t.[user] = t1.[user])), 0), 114)
from @data t1
group by t1.[user]
收获园豆:10
gunsmoke | 园豆:3592 (老鸟四级) | 2013-10-16 12:49

不好意思,我在msdn问道答案了,谢谢你。

支持(0) 反对(0) 荆棘人 | 园豆:173 (初学一级) | 2013-10-26 22:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册