1

usernameフィールドとlastUpdateDateTimeフィールドを持つテーブルがあります。ユーザーがこのテーブルに複数のエントリを作成した場合、最初のエントリと最後のエントリの違いを分と秒で確認したいと思います。関数DATEDIFFを使用する可能性があると思いましたが、データベースには2つの別個のフィールドとして開始日と終了日がありません。ユーザー名順に結果をループするには、カーソルを使用する必要がありますか?

これを行う方法がわかりません。

これが最新です...

SELECT username,  
DATEDIFF(ss, MinDate, MaxDate) Assessment_Timespan,
AssessmentDate
FROM
(
SELECT storeID, username,
MIN(lastUpdateDateTime) MinDate,
MAX(lastUpdateDateTime) MaxDate, 
CONVERT(VARCHAR(50), LastUpdateDateTime, 101) AS AssessmentDate
FROM Assessment
GROUP BY username, storeID, CONVERT(VARCHAR(50), LastUpdateDateTime, 101)
) src
4

1 に答える 1

1

このようなものを使用できます。minそれぞれのとのmax値の両方を取得しますusername。それができたら、DateDiff()関数をそれに適用できます。

select username,  
  datediff(ss, MinDate, MaxDate) DiffInSeconds
from
(
  select username,
    min(lastUpdateDateTime) MinDate,
    max(lastUpdateDateTime) MaxDate
  from yourtable
  group by username
) src

デモで SQL Fiddle を参照してください

これにより、秒単位で違いが得られます。その後、必要な方法でフォーマットできます。

于 2013-02-06T17:50:19.157 に答える