Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从SQL数据库表中获取最近5分钟的记录?_Sql Server - Fatal编程技术网

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

Sql 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分钟的

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

例如: 我需要“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()