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

时间:2016-05-18 05:14:03

标签: sql-server

如何从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分钟记录。

E.g: 我需要" xyz" 用户信息。

我尝试了以下查询无效。

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

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

怎么做。请帮我解决。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

试试这个,

NavigatorIOS

答案 2 :(得分:0)

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

试试这段代码