与当前日期时间

时间:2016-05-12 14:32:04

标签: sql sql-server

我有一个项目涉及将datetime字段与当前日期和时间进行比较,如果它们之间的差异是10分钟,那么我必须选择一些日期。它涉及复杂性,例如当前日期和时间是大于字段datetime的日期。有没有人有这个简单的解决方案?

1 个答案:

答案 0 :(得分:0)

这可以使用DATEDIFF非常简单地完成:

IF ( SELECT DATEDIFF(MINUTE, a.StartDate, GETDATE())
     FROM   TableA a) > 10
BEGIN
    SELECT  *
    FROM    TableB
END

这简单地说,如果当前时间(GETDATE())超过StartDateTableA的10分钟,请执行其他操作。

请注意,如果a.StartDate 大于 GETDATE()(无论出于何种原因),则DATEDIFF的值将为否定 - 在这种情况下,您只需将比较更改为> -10

来自评论的编辑:

  

我想要所有在过去10分钟内都没有运行的serverID

这可以通过以下方式轻松完成:

SELECT  ServerID
FROM    TableA
WHERE   DATEDIFF(MINUTE, LastRunTime, GETDATE()) > 10

以下是您可以查看DATEDIFF行为的一些“检查” - 关于关注分钟的评论不正确,但跳到更大的间隔{{1} },DAY等会导致一些有趣的行为。

例如:

MONTH

返回1(月),尽管相隔仅2天。类似地,

SELECT DATEDIFF(MONTH, '05/30/2016 08:10:00', '06/01/2016 08:05:00')

返回2,尽管时间不是相当使其达到2天标记。最后,

SELECT DATEDIFF(DAY, '05/30/2016 08:10:00', '06/01/2016 08:05:00')

也返回1.

希望这有助于您理解使用SELECT DATEDIFF(YEAR, '12/31/2016 08:10:00', '01/01/2017 08:05:00')