我想计算两个日期之间的日期时差,但是分钟应该是.100比例,即如果日期时差为2.30 (2 Hours 30 Minutes)
我希望格式为2.50
30分钟= 0.50
我为它写了一个查询,但是当分钟在01 - 09
案例1:输出错误
Declare @Start DateTime='02-03-2014 14:25:00'
Declare @End DateTime='02-03-2014 20:29:46'
Select STR(DateDiff(MINUTE,@Start,@End)/60)+'.'+STR(DateDiff(MINUTE,@Start,@End)%60/0.6)
日期时差:6.04
预期产出:6.10
实际输出:6.7
案例2:正确输出
Declare @Start DateTime='02-03-2014 13:55:02'
Declare @End DateTime='02-03-2014 17:33:31'
Select STR(DateDiff(MINUTE,@Start,@End)/60)+'.'+STR(DateDiff(MINUTE,@Start,@End)%60/0.6)
日期时差:3.38
预期产出:6.63
实际输出:6.63
我错过了什么,如果分钟数小于10?
数据库:SQL Server 2008
答案 0 :(得分:1)
STR(DateDiff(MINUTE,@Start,@End)%60/0.6)
0.6似乎应该用6.0替换
上述解决方案将在小数点后四舍五入。
如果您希望将ROUND
关闭到小数点后的2个位置,可以尝试下面的代码段:
SELECT CAST(CAST(ROUND(DateDiff(MINUTE,@Start,@End)%60/0.6) AS NUMERIC(12,2)) AS VARCHAR(50))
答案 1 :(得分:1)
60分钟= 60/60 = 1.0
30分钟= 30/60 = 0.5
4分钟= 4/60 = 0.066
,而不是0.10
0.10 = 6分钟,与第一个例子中的差异不是4分钟。
如果我们暂时删除秒以降低复杂性,那么您只需将秒数除以3600.00:
Declare @Start DateTime='02-03-2014 14:25:00'
Declare @End DateTime='02-03-2014 20:29:00'
SELECT DATEDIFF(s,@Start,@End)/3600.00
这将返回6.066
,这是正确的小时部分,可以返回6小时4分钟的差异和更简单的表达。
答案 2 :(得分:1)
试试这个,它应该给出一个非常精确的结果(在四舍五入后):
Declare @Start DateTime='02-03-2014 13:55:02'
Declare @End DateTime='02-03-2014 17:33:31'
Select round(cast(@end-@start as float)*24, 2)
如果要向下舍入
,请使用此选项Select floor(cast(@end-@start as float)*2400) / 100
答案 3 :(得分:1)
我的朋友关注您的要求表格。
1 1.666666667
2 3.333333333
3 5
4 6.666666667
5 8.333333333
6 10
7 11.66666667
8 13.33333333
9 15
10 16.66666667
11 18.33333333
12 20
13 21.66666667
14 23.33333333
15 25
16 26.66666667
17 28.33333333
18 30
19 31.66666667
20 33.33333333
21 35
22 36.66666667
23 38.33333333
24 40
25 41.66666667
26 43.33333333
27 45
28 46.66666667
29 48.33333333
30 50
31 51.66666667
32 53.33333333
33 55
34 56.66666667
35 58.33333333
36 60
37 61.66666667
38 63.33333333
39 65
40 66.66666667
41 68.33333333
42 70
43 71.66666667
44 73.33333333
45 75
46 76.66666667
47 78.33333333
48 80
49 81.66666667
50 83.33333333
51 85
52 86.66666667
53 88.33333333
54 90
55 91.66666667
56 93.33333333
57 95
58 96.66666667
59 98.33333333
60 100
在第一种情况下,你的实际差异是6小时& 4分钟。因此,根据6.07的要求,你是如何说它是错的?