3

任何人都知道为什么以下内容返回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);
4

5 回答 5

2

试试这个,将分钟的 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;
于 2013-06-18T09:26:35.407 回答
2

尝试这个 :

print cast(datediff(mi,@start_day + @start_time, @end_day + @end_time) 
           as decimal(10,2))/60;
于 2013-06-18T09:20:33.643 回答
0

它返回完全经过的小时数。如果你想有 8.5 分钟的返回时间,然后除以 60.0。

于 2013-06-18T09:17:20.303 回答
0

您有hour一个日期部分,文档指出:

日期差异

返回指定开始日期和结束日期之间跨越的指定日期部分边界的计数(有符号整数)。

于 2013-06-18T09:17:24.610 回答
0

DATEDIFF() 函数返回两个日期之间的时间。它的语法是

DATEDIFF(datepart,startdate,enddate)

在 datepart 中,您提到了小时,这就是为什么它只打印小时部分

于 2013-06-18T09:19:39.623 回答