sql - datediff 没有返回我所期待的

标签 sql sql-server sql-server-2008 tsql datetime

有人知道为什么以下返回 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);

最佳答案

试试这个,将分钟的 DATEDIFF 转换为 float ,然后除以 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;

关于sql - datediff 没有返回我所期待的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17165008/

相关文章:

sql-server - 表值函数中的顺序错误(保留递归 CTE 的 "order")

sql-server - 使用 CTE 以逗号分隔的字符串

sql-server - 使用具有滚动总和的 SQL Over 语句

sql-server - 使用 SSMS 的所有数据库的磁盘使用情况摘要

java - 批量读取 SQL 数据库

sql - 检查一个字符串是否有特定的结尾,删除这个结尾,然后根据另外两个条件写入这些字符串

python - 使用子查询创建单个查询,本质上是一个带有选择查询的插入查询

php - 在php中创建插入函数

sql - 如何将来自不同列的多个列组合到一个表或 View 中?

sql - 如何在 SQL Server 2012 中生成特定查询