sql - 使用 datediff 获取正确的小时值
问题描述
我正在尝试datediff
在 SQL Server 中使用该函数。我正在查询同一个表中的两个日期时间列。我正在尝试获得以小数点为单位的小时和分钟的结果。
作为一个例子,我有这个查询:
Select
startdatetime, enddatetime,
datediff(minutes, startdatetime, enddatetim) / 60 as 'Hrs worked'
from table1
结果将类似于:
startdatetime | enddatetime | Hrs. worked
2019-02-28 06:00:00.0000000 -08:00 2019-02-28 07:15:00.0000000 -08:00 1
显然 startdatetime 和 enddatetime 之间的差异应该是 1.25 而不仅仅是 1。
反正有显示十进制值(1.25)吗?
我也试过:
Select
StartDateTime, EndDateTime,
Convert(decimal(3), (Datediff(minute, StartDateTime, EndDateTime))) / 60 AS 'Hrs Worked'
From Table1
我确实得到了小时。作为'1.250000'工作,但我无法删除尾随零。
如果我使用decimal(2)
而不是decimal(3)
,我会收到此错误:
将 int 转换为数据类型 numeric 的算术溢出错误
有什么建议么?
解决方案
解决方案结合了 Jack Liu 和 marc_s 的建议。
我还需要定义小数并明确设置 60.0。
这是我正在尝试做的正确格式的示例。
从 Table1 中选择 StartDateTime、EndDateTime、CAST(Datediff(minute, StartDateTime, EndDateTime) / 60.0 AS Decimal(10, 2))'Hrs Worked'
推荐阅读
- c# - Rest POST API 与 POSTMAN 一起使用,但无法使用 Xamarin.Forms
- java - Getter 方法使用
- android - 如何将位图图像横向设置为纵向
- certificate - SSLError:(“糟糕的握手:错误([('SSL例程','tls_process_server_certificate','证书验证失败')])”)))
- kubernetes - Kubernetes Autoscaler 如何始终保持一个节点处于空闲状态
- android - post方法中的自定义Gson请求和响应
- c - 用于在键盘上编程键的开关盒。到目前为止这似乎正确吗?
- bison - Bison 3.2 编译问题
- android - How to open the XMPP connection in react native throughout the entire app (using xmpp.js)?
- python - 如何在 for 循环中将多个旧字符串替换为新字符串?