[英]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.