我在不同的地方搜索,发现了下面的查询。我使用以下查询来获取SQL
中的实际分钟差。我提供的日期是同一天。我只需要差几分钟,但是SQL
返回的是35分钟,而不是第一个查询中的5分钟。第二个查询返回毫秒。
SELECT DATEDIFF(MINUTE,GETDATE(), CONVERT(datetime,'2016-08-11 16:04:24'))%3600/60 AS MinuteDiff
SELECT datediff(minute,GETDATE(), CONVERT(datetime,'2016-08-11 16:04:24')) as MinutesDiff
缺少的是什么。请帮帮忙。
我需要提出一个条件,如果时间少于20分钟
执行此操作
否则
执行此操作
更新:
当我使用GetDate()时,就会出现这个问题。当我使用固定日期时,它可以正常工作。
发布于 2016-08-11 11:35:14
您需要将GETDATE()
放在日期时间值之后,而在您的情况下,您将得到负值的分钟数。
SELECT DATEDIFF(MINUTE,CONVERT(datetime,'2016-08-11 16:04:24'), GETDATE()) AS MinuteDiff
当前的GETDATE()
是2016-08-11 17:05:39.053
,所以它返回61
。
然后,根据这个值,使用IF ... ELSE ...
可以执行您预期的操作:
IF DATEDIFF(MINUTE,CONVERT(datetime,'2016-08-11 16:04:24'), GETDATE()) < 20
PRINT 'With in 20 mins'
ELSE
PRINT 'More than 20 mins'
发布于 2016-08-11 11:29:21
嘿,抱歉,最初的解释不太好。
我经常使用如下所示--这将返回一个INT,并决定它是否可以对其执行逻辑,等于,不小于等。
如果它是真,它将返回一个1或它是假的0。您可以让它返回列或将其设置为字符串。
希望它能帮上忙
select
Case
When DateDiff(minute,[column],Getdate()) > 20 then 1 else 0
end as [alias]
发布于 2016-08-11 11:36:18
下面是您的after...although的一个工作示例,您可能需要根据需要切换日期组件以供您使用。
select
case
when
(SELECT datediff(minute,GETDATE(), CONVERT(datetime,'2016-08-11 06:00:00'))) < 20 then
(select 'do this')
else
(select 'do something else')
end as answer
https://stackoverflow.com/questions/38895001
复制相似问题