如何从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())
但我从学生表中获取空值。
怎么做。请帮我解决。
答案 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())
试试这段代码