最近では、フォーラムでは、私は彼らが解決することができますが、多くの困難なSQLの問題に会ったが、数日後、彼らはの溶液を忘れて、覚えていないことができました。
だから、私は出会いの後にこの問題ことを再度、記録する必要性を感じる、との考えから回答を得ることができます。
ユーザーがオンライン着陸時間を解決する方法 - 時間と分の計算を。
http://bbs.csdn.net/topics/390613823
私はユーザーがオンライン時間が欲しい、形式は次のとおりです。08:00とすると、この長い行結果の午前8時43分フォーマット。
私は、ドキュメントSQLをチェックしてみてください、また多くのことをBaiduの。しかし、この点ではありませんアプリケーション。
私はまた、多くのことを書くことを試みたが、私がすることはできません。
私はオンライン分の合計数、または秒の合計数を取得することができます。希望の形式を与えたわけではありません。
これは私のコードです:
SELECT TA [ユーザー]、(DATEDIFF(miザ、ta.time、tb.time))から。
( 'ログイン'からWHERE T1.operate = TlのSELECT *)AS TA
インナー参加
SELECT * FROM( WHERE T1.operate = Tlの'ジンバブエログアウト')AS TB
ON TA。[ユーザー] = TB。[ユーザー]
-------------------------- ----------
または書き込み:
SELECT TA [ユーザー]、キャスト(DATEDIFF(時間、ta.time、tb.time)AS VARCHAR)+ ':' +キャスト(DATEDIFF(分、TA .time、tb.time)AS VARCHAR)
から
([ユーザー]を選択し、[時間]はTlのからAS TA = 'ログイン' [操作])
内部結合
([ユーザー]を選択し、[時間]がTlのから[操作] = 'ジンバブエログアウト')AS TB
。ON TA [ユーザー] = TB [ユーザー] .;
両方のバージョンは、所望の結果を達成することができません。指導の神の要請で、ヘルプが溶液を得ました。
私は、髪のレンダリングのテストを終えました。
私の解決策:
方法1:
-
drop
table t1
-
-
create
table T1
-
(
-
[
user]
varchar(
30),
-
operate
varchar(
10),
-
time datetime
-
)
-
-
insert
into T1
-
select
'LiMing',
'Login',
'2010/10/24 8:03'
union all
-
select
'WangYi',
'Login',
'2010/10/24 8:14'
union all
-
select
'WangYi',
'Logout',
'2010/10/24 16:14'
union all
-
select
'LiMing',
'Logout',
'2010/10/24 16:14'
-
-
-
select [
user],
-
cast(
cast(
round(
interval *
1.0 /
60,
0,
1)
as
int)
as
varchar) +
':' +
-
case
when
interval *
1.0 %
60 <>
0
-
then
cast(
cast(
round(
interval *
1.0 %
60,
0,
1)
as
int)
as
varchar)
-
else
'00'
-
end
-
from
-
(
-
select T1.[
user],
-
DATEDIFF(
MINUTE,t1.time,t2.time)
as
interval
-
-
from T1
-
inner
join T1 t2
-
on t1.[
user] = t2.[
user]
-
and t1.operate =
'login'
-
and t2.operate =
'logout'
-
)a
-
/*
-
user (无列名)
-
LiMing 8:11
-
WangYi 8:00
-
*/
方法2:
-
--方法2.
-
select [
user],
-
convert(
varchar(
5),
DATEADD(
MINUTE,
interval,
time),
114)
-
from
-
(
-
select T1.[
user],
-
convert(
varchar(
10),t1.time,
120)
as
time,
-
DATEDIFF(
MINUTE,t1.time,t2.time)
as
interval
-
-
from T1
-
inner
join T1 t2
-
on t1.[
user] = t2.[
user]
-
and t1.operate =
'login'
-
and t2.operate =
'logout'
-
)a
-
/*
-
user (无列名)
-
LiMing 08:11
-
WangYi 08:00
-
*/
だから、私は出会いの後にこの問題ことを再度、記録する必要性を感じる、との考えから回答を得ることができます。