[英]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
的行为 - 关于只关心分钟的评论是不正确的,但跳转到更大的间隔DAY
、 MONTH
等确实会导致一些有趣的行为。
例如:
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.