未在SQL DateDiff中获取实际分钟数

未在SQL DateDiff中获取实际分钟数,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我在不同的地方搜索,发现了以下查询。我使用以下查询来获取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(datet

我在不同的地方搜索,发现了以下查询。我使用以下查询来获取
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并决定它是否为,然后你可以对它进行逻辑运算,等于,不等于小于大于等等

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

希望能有帮助

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

嘿,很抱歉最初的解释很糟糕

我经常使用下面这样的东西,这将返回一个INT并决定它是否为,然后你可以对它进行逻辑运算,等于,不等于小于大于等等

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

希望能有帮助

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

您需要将
GETDATE()
放在datetime值之后,否则您将得到负值的分钟数

SELECT DATEDIFF(MINUTE,CONVERT(datetime,'2016-08-11 16:04:24'), GETDATE()) AS MinuteDiff 
当前的
GETDATE()
2016-08-11 17:05:39.053
,因此它返回
61

然后根据该值,使用
IF。。。否则…
您可以执行预期的操作:

IF DATEDIFF(MINUTE,CONVERT(datetime,'2016-08-11 16:04:24'), GETDATE()) < 20
    PRINT 'With in 20 mins'
ELSE
    PRINT 'More than 20 mins'
IF DATEDIFF(分钟,转换为datetime,'2016-08-11 16:04:24'),GETDATE())<20
打印“20分钟内完成”
其他的
打印“超过20分钟”

您需要将
GETDATE()置于datetime值之后,否则您将得到负值的分钟数

SELECT DATEDIFF(MINUTE,CONVERT(datetime,'2016-08-11 16:04:24'), GETDATE()) AS MinuteDiff 
当前的
GETDATE()
2016-08-11 17:05:39.053
,因此它返回
61

然后根据该值,使用
IF。。。否则…
您可以执行预期的操作:

IF DATEDIFF(MINUTE,CONVERT(datetime,'2016-08-11 16:04:24'), GETDATE()) < 20
    PRINT 'With in 20 mins'
ELSE
    PRINT 'More than 20 mins'
IF DATEDIFF(分钟,转换为datetime,'2016-08-11 16:04:24'),GETDATE())<20
打印“20分钟内完成”
其他的
打印“超过20分钟”

下面是一个工作示例,说明了您的后续操作…尽管您可能需要根据自己的使用情况适当地切换日期组件

    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
选择
案例
什么时候
(选择datediff(分钟,GETDATE(),转换(日期时间,'2016-08-11 06:00:00'))<20然后
(选择“执行此操作”)
其他的
(选择“执行其他操作”)
作为答案结束

下面是一个工作示例,说明了您的后续操作…尽管您可能需要根据自己的使用情况适当地切换日期组件

    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
选择
案例
什么时候
(选择datediff(分钟,GETDATE(),转换(日期时间,'2016-08-11 06:00:00'))<20然后
(选择“执行此操作”)
其他的
(选择“执行其他操作”)
作为答案结束

如果您想要两个日期时间之间的分钟间隔,那么您的第二个就足够了

选择datediff(n,转换(datetime,'2016-08-11 16:04:24'),GETDATE())作为分钟diff

你可以用它来做进一步的研究

select 
    case when 
           datediff(n, CONVERT(datetime,'2016-08-11 16:04:24'),GETDATE()) < 20 then
              `your code`
           else
              `your else code`
           end minte
选择
当
datediff(n,CONVERT(datetime,'2016-08-11 16:04:24'),GETDATE())<20
`你的代码`
其他的
`您的else代码`
末明特

如果您想要两个日期时间之间的分钟间隔,那么您的第二个就足够了

选择datediff(n,转换(datetime,'2016-08-11 16:04:24'),GETDATE())作为分钟diff

你可以用它来做进一步的研究

select 
    case when 
           datediff(n, CONVERT(datetime,'2016-08-11 16:04:24'),GETDATE()) < 20 then
              `your code`
           else
              `your else code`
           end minte
选择
当
datediff(n,CONVERT(datetime,'2016-08-11 16:04:24'),GETDATE())<20
`你的代码`
其他的
`您的else代码`
末明特


第二种方法对我很有效,不过我把时间改为7:25,因为我是东部时间。因为现在是7:30,所以返回-5,如果我将参数切换到datediff,则返回5。此外,不需要显式转换。选择datediff(分钟'2016-08-11 7:25:24',GETDATE())作为MinutesDiffit返回的值-128160。选择datediff(分钟,'2016-08-11 16:35:35.983',GETDATE())作为分钟Diff。它应该只返回1分钟。请详细说明当您说第二个查询返回毫秒时的含义。另外,当您说“少于20分钟”时,您需要精确到什么程度?不确定您或服务器所在的时区,选择getdate()返回的是什么?第二个选项对我有效,尽管我将时间更改为东部时间的7:25。因为现在是7:30,所以返回-5,如果我将参数切换到datediff,则返回5。此外,不需要显式转换。选择datediff(分钟'2016-08-11 7:25:24',GETDATE())作为MinutesDiffit返回的值-128160。选择datediff(分钟,'2016-08-11 16:35:35.983',GETDATE())作为分钟Diff。它应该只返回1分钟。请详细说明当您说第二个查询返回毫秒时的含义。另外,当你说“少于20分钟”时,你需要多精确?不确定你或服务器所在的时区,选择getdate()返回的是什么?我现在在火车上,所以要充实我现在在火车上,所以要充实我不明白。我正在使用SQLServer2008。这是问题吗?如果..你能执行
吗。。ELSE…
块,我在答案中添加了它。是的,我执行它。对于固定日期,它运行良好。但当我提供GetDate()时,它的结果是错误的。@Abdul:可能是您的服务器的日期时间错误。如果执行
选择GATEDATE()
,它将返回什么?系统日期正常。当我提供从get date()开始的日期时