2016-05-18 6 views
1

SQLテーブルから最後の5分のレコードを取得する方法。SQLデータベーステーブルから最後の5分のレコードを取得するには?

例:Studentという名前のテーブルが1つあります。

ID Name  StartTime 
-- ---------- ---------------------- 
1 abc   2016-05-18 08:00:29.587 
2 xxx   2016-05-18 08:05:30.287 
3 xyz   2016-05-18 08:10:30.287 

は時間が8:15で今考えてみましょう。私は最後に取得したい5分レコードから"Student"テーブル。

例: 私は"xyz"ユーザ情報が必要です。

以下のクエリは機能しませんでした。

select * from Student where startTime is not null and startTime < GetDate() and startTime > dateadd(minute, -5, GetDate()) 

しかし、私は学生テーブルからnull値を取得しています。

どのように行うか。解決するのを助けてください。

+0

ベースあなたの説明には、レコードを取得する理由はありません。どのデータ型がStartTimeですか? 'select dateadd(分、-5、GetDate())、getdate()'を実行するとどうなりますか –

答えて

0
select * from Student where startTime is not null and startTime > DATEADD(minute, -5, GETUTCDATE()) 

これは日時の秒コンポーネントが原因かもしれません

2

このコードを試してみてください。あなたがしたいことは、secondsをdatetimeから削除することです。ここではどのようである。その後、

SELECT CAST(CONVERT(VARCHAR(16), GETDATE(), 120) + ':00' AS DATETIME) 

そして、このように、比較して結果を使用します。

CREATE TABLE Student(
    ID  INT, 
    Name VARCHAR(3), 
    StartTime DATETIME 
); 
INSERT INTO Student VALUES 
(1, 'abc', '2016-05-18 08:00:29.587 '), 
(2, 'xxx', '2016-05-18 08:05:30.587 '), 
(3, 'xyz', '2016-05-18 08:10:30.587 '); 

DECLARE @currDate DATETIME = '2016-05-18 08:15:59.000' 

SELECT @currDate = CAST(CONVERT(VARCHAR(16), @currDate, 120) + ':00' AS DATETIME) 

SELECT * 
FROM Student 
WHERE startTime > DATEADD(MINUTE, -5, @currDate) 


DROP TABLE Student; 

結果:

ID   Name StartTime 
----------- ---- ----------------------- 
3   xyz 2016-05-18 08:10:30.587 
+0

ありがとうございました....うまく動作します – dhamo

2

SELECT * 
FROM Student 
WHERE STARTIME >= Dateadd(MINUTE, -5, GETDATE()) 
、これを試してみてください
関連する問題