どうすればこのようにずっと得ることができますかdatediff(time, logindate, logoutdate)
この組み込み関数が時間引数を受け入れないことは知っていますが、分、ミリ秒、秒などではなく、どうすれば全体の時間を取得できますか?
logindate datetime2
logoutdate datetime2
その一部ではなく、1:05:45のようなものが欲しいです。
どうすればこのようにずっと得ることができますかdatediff(time, logindate, logoutdate)
この組み込み関数が時間引数を受け入れないことは知っていますが、分、ミリ秒、秒などではなく、どうすれば全体の時間を取得できますか?
logindate datetime2
logoutdate datetime2
その一部ではなく、1:05:45のようなものが欲しいです。
これを試して
create table dbo.UserLog (UserID VARCHAR(32),loginDate DATETIME,logoutDate DATETIME)
insert into userLog VALUES ('SPARKY','11/14/2009 3:25pm',getDate())
insert into userLog VALUES ('JANNA','11/14/2009 10:45am',getDate())
select UserId,loginDate,logoutDate,
convert(varchar(12),dateAdd(mi,datediff(mi,logindate,logoutdate),'Jan 1 1753 12:00AM'),114) as timeSpent
FROM userLog
基本的に、日付間の分差を最も早い有効な SQL 日付に追加し、時刻としてフォーマットされた値を返します。
日数に違いがある場合:
select cast(logoutdate - logindate as float) from table_name
あるいは単に
select logoutdate - logindatefrom table_name
あなたはそれから日、時間、分を評価することができます。
編集
時間としてフォーマットするには:
SELECT CONVERT(VARCHAR,DATA_KOSZTU - DATA_OST_ZMIANY,108) FROM TR_KOSZT
CONVERTはタイムスパンではなく日時のフォーマットに使用されるため、ユーザーが24時間以上ログに記録されていない場合に機能します。
MSSQLにはtimepsanデータ型がないため、.NETdatediff
でsayのインスタンスを作成するには、ミリ秒から年までの絶対整数で返すだけで十分です。TimeSpan
どのSQLServerバージョンについて話しているのですか?SQL Server 2000以降では、少なくとも、
SELECT datediff(ss,'2006-11-10 05:47:53.497','2006-11-10 05:48:10.420')
これらの2つの日時の差を秒単位で示します。
例 CONVERT(varchar(10),GETDATE(),108) を選択