2016-05-18 79 views
1

如何从SQL表中获取最后5分钟的记录。如何从SQL数据库表中获取最后5分钟的记录?

例如:我有一个名为Student的表名。

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。我想从"Student"表中获取最后5分钟记录。

例如: 我需要“xyz”用户信息。

我试过下面的查询不工作。

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

但我从学生表中获得空值。

如何做到这一点。请帮我解决。

+0

基于根据你的解释,没有理由你没有记录。 StartTime是什么数据类型?如果你运行'select dateadd(minute,-5,GetDate()),getdate()' –

回答

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

试试这个代码

2

这可能是由于日期时间的秒部分。你想要做的是确保你从日期时间删除seconds。这里是如何:

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()) 
相关问题