【问题标题】:get datediff hours in decimal sql server获取十进制 sql server 中的 datediff 小时数
【发布时间】:2017-07-18 03:01:25
【问题描述】:

我需要查询以获取十进制值的总小时数

这是我目前的查询:

declare @start as time;
declare @end as time;
declare @total as decimal(18, 2);

set @start = '17:00:00'
set @end = '18:30:00'

set @total = datediff(minute, @start, @end)/60

print @total

查询给我整数值,尽管@total 参数是小数。 我不知道如何得到十进制值。

请帮帮我,提前谢谢你。

【问题讨论】:

  • 试试 /60.0 这将提供所需的精度
  • 非常感谢您,先生,您给我的代码就像一个魅力!
  • 不客气。
  • Datediff 返回一个整数。当你将它除以一个整数 (60) 时,你会得到一个整数。如果您希望结果为小数,则需要根据@JohnCappelletti 的评论除以小数(例如 60.0)

标签: sql sql-server decimal datediff


【解决方案1】:

尝试除以 60.0。这将提供所需的精度

一个 int 除以一个 int 将返回一个 int。为了避免这种情况,只需将分子或分母变成浮点数。

示例

declare @start as time;
declare @end as time;
declare @total as decimal(18, 2);

set @start = '17:00:00'
set @end = '18:30:00'

set @total = datediff(minute, @start, @end)/60.0

print @total

退货

1.50

【讨论】:

    【解决方案2】:

    DateDiff 总是返回 int,所以以分钟为单位取 DateDiff,然后除以 60.0。小数点是必需的。

    set @total = datediff(minute, @start, @end)/60.0
    

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      相关资源
      最近更新 更多