任何人都知道为什么以下内容会返回8
?我期待8小时30分钟,或8.5?
declare @start_day datetime;
declare @end_day datetime;
declare @start_time datetime;
declare @end_time datetime;
set @start_day = '2014-06-18';
set @end_day = '2014-06-18';
set @start_time = '09:00';
set @end_time = '17:30';
print datediff(hour,@start_day + @start_time, @end_day + @end_time);
答案 0 :(得分:2)
试试这个:
print cast(datediff(mi,@start_day + @start_time, @end_day + @end_time)
as decimal(10,2))/60;
答案 1 :(得分:2)
试试这个,CAST您的DATEDIFF分钟浮动然后除以60得到小时。
declare @start_day datetime;
declare @end_day datetime;
declare @start_time datetime;
declare @end_time datetime;
set dateformat ymd
set @start_day = '2014-06-18';
set @end_day = '2014-06-18';
set @start_time = '09:00';
set @end_time = '17:30';
print cast(datediff(minute,@start_day + @start_time, @end_day + @end_time) as float) / 60;
答案 2 :(得分:0)
它返回完全经过的小时数。 如果你想要8.5分钟,然后除以60.0。
答案 3 :(得分:0)
您有hour
作为日期部分,documentation州:
<强> DATEDIFF 强>
返回指定datepart的count(有符号整数) 在指定的startdate和enddate之间交叉的边界。
答案 4 :(得分:0)
The DATEDIFF()函数返回两个日期之间的时间。它的语法是
DATEDIFF(datepart,startdate,enddate)
在datepart中你提到小时,这就是为什么它只打印小时部分