首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQL DateDiff中不获取实际分钟

在SQL DateDiff中不获取实际分钟
EN

Stack Overflow用户
提问于 2016-08-11 11:22:58
回答 4查看 701关注 0票数 1

我在不同的地方搜索,发现了下面的查询。我使用以下查询来获取SQL中的实际分钟差。我提供的日期是同一天。我只需要差几分钟,但是SQL返回的是35分钟,而不是第一个查询中的5分钟。第二个查询返回毫秒。

代码语言:javascript
运行
复制
 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()时,就会出现这个问题。当我使用固定日期时,它可以正常工作。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-11 11:35:14

您需要将GETDATE()放在日期时间值之后,而在您的情况下,您将得到负值的分钟数。

代码语言:javascript
运行
复制
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 ...可以执行您预期的操作:

代码语言:javascript
运行
复制
IF DATEDIFF(MINUTE,CONVERT(datetime,'2016-08-11 16:04:24'), GETDATE()) < 20
    PRINT 'With in 20 mins'
ELSE
    PRINT 'More than 20 mins'
票数 0
EN

Stack Overflow用户

发布于 2016-08-11 11:29:21

嘿,抱歉,最初的解释不太好。

我经常使用如下所示--这将返回一个INT,并决定它是否可以对其执行逻辑,等于,不小于等。

如果它是真,它将返回一个1或它是假的0。您可以让它返回列或将其设置为字符串。

希望它能帮上忙

代码语言:javascript
运行
复制
select
   Case
   When DateDiff(minute,[column],Getdate()) > 20 then 1 else 0 
end as [alias]
票数 0
EN

Stack Overflow用户

发布于 2016-08-11 11:36:18

下面是您的after...although的一个工作示例,您可能需要根据需要切换日期组件以供您使用。

代码语言:javascript
运行
复制
    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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38895001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档