繁体   English   中英

在SQL DateDiff中没有获得实际的分钟数

[英]Not getting actual minutes in SQL DateDiff

我在不同的地方搜索,发现下面的查询。 我使用以下查询来获取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()时会出现此问题。 当我使用修复日期时,它工作正常

嘿,对不起最初的糟糕解释。

我经常使用类似下面的内容,这将返回一个INT并决定是否可以对其进行逻辑,等于,不等于大于等。

如果为true,则返回1或者为false为0.您可以返回列或将其设置为字符串。

希望能帮助到你

select
   Case
   When DateDiff(minute,[column],Getdate()) > 20 then 1 else 0 
end as [alias]

您需要在日期时间值之后放置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'

以下是您的后续工作示例...尽管您可能需要根据您的使用情况切换出日期组件。

    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

如果你想要两个日期时间之间的分钟跨度,那么你的第二个就足够了。

SELECT datediff(n, CONVERT(datetime,'2016-08-11 16:04:24'),GETDATE()) as MinutesDiff

您可以进一步使用CASE

select 
    case when 
           datediff(n, CONVERT(datetime,'2016-08-11 16:04:24'),GETDATE()) < 20 then
              `your code`
           else
              `your else code`
           end minte

暂无
暂无

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

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