Sql server 如何从SQL数据库表中获取最近5分钟的记录?
如何从SQL表中获取最近5分钟的记录 我有一张桌子的名字叫StudentSql server 如何从SQL数据库表中获取最近5分钟的记录?,sql-server,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:15am。我想从“学生”表中获取最后5分钟的
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:15am。我想从“学生”
表中获取最后5分钟的记录
例如:
我需要“xyz”用户信息
我试过下面的问题,但没用
select * from Student where startTime is not null and startTime < GetDate() and startTime > dateadd(minute, -5, GetDate())
select*from Student,其中startTime不为null,startTimedateadd(分钟-5,GetDate())
但我从student表中获取空值
怎么做。请帮我解决这个问题
select * from Student where startTime is not null and startTime > DATEADD(minute, -5, GETUTCDATE())
试试这个代码
请尝试此代码这可能是由于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
这可能是由于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
试试这个
SELECT *
FROM Student
WHERE STARTIME >= Dateadd(MINUTE, -5, GETDATE())
试试这个
SELECT *
FROM Student
WHERE STARTIME >= Dateadd(MINUTE, -5, GETDATE())
根据你的解释,你没有理由没有记录。StartTime是什么数据类型?如果运行
选择dateadd(minute,-5,GetDate()),GetDate()
会发生什么?根据您的解释,您没有理由没有记录。StartTime是什么数据类型?如果运行选择dateadd(分钟,-5,GetDate()),GetDate()