繁体   English   中英

SQL 日期时间与当前日期时间的比较

[英]SQL datetime comparison with current datetime

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

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

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

这只是说,如果当前时间 ( GETDATE() ) 比TableA上的StartDate超过 10 分钟,请执行其他操作。

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

从评论编辑:

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

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

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

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

例如:

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

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

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

返回2,尽管时间不是能够进入2天痕。 最后,

SELECT DATEDIFF(YEAR, '12/31/2016 08:10:00', '01/01/2017 08:05:00')

也返回 1。

希望这有助于您理解使用DATEDIFF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM