2

どうすればこのようにずっと得ることができますかdatediff(time, logindate, logoutdate)

この組み込み関数が時間引数を受け入れないことは知っていますが、分、ミリ秒、秒などではなく、どうすれば全体の時間を取得できますか?

logindate datetime2
logoutdate datetime2

その一部ではなく、1:05:45のようなものが欲しいです。

4

6 に答える 6

4

これを試して

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 日付に追加し、時刻としてフォーマットされた値を返します。

于 2009-11-15T03:00:31.307 に答える
1

日数に違いがある場合:

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時間以上ログに記録されていない場合に機能します。

于 2009-11-15T02:36:35.067 に答える
0

MSSQLにはtimepsanデータ型がないため、.NETdatediffでsayのインスタンスを作成するには、ミリ秒から年までの絶対整数で返すだけで十分です。TimeSpan

于 2009-11-15T02:39:37.900 に答える
0

どのSQLServerバージョンについて話しているのですか?SQL Server 2000以降では、少なくとも、

SELECT datediff(ss,'2006-11-10 05:47:53.497','2006-11-10 05:48:10.420')

これらの2つの日時の差を秒単位で示します。

于 2009-11-15T02:39:48.180 に答える
0

例 CONVERT(varchar(10),GETDATE(),108) を選択

于 2009-11-15T06:32:00.013 に答える