簡體   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