【问题标题】:Getting the correct hour value with datediff使用 datediff 获取正确的小时值
【发布时间】:2021-11-20 02:47:59
【问题描述】:

我正在尝试在 SQL Server 中使用 datediff 函数。我正在查询同一个表中的两个日期时间列。我正在尝试获得以小数点为单位的小时和分钟的结果。

作为一个例子,我有这个查询:

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 的算术溢出错误

有什么建议吗?

【问题讨论】:

  • 尾随零不会改变数字的值?

标签: sql sql-server tsql datediff


【解决方案1】:

DATEDIFF 返回一个 INT 值(此处为:75),并将其除以 60 使用 integer 除法,因此您不会得到任何 int 的分数(基本上回答问题:“有多少次 '60' 可以完全包含在所讨论的值中 - 这里是 '75' - 这只是 '1')。

如果您想要小数小时 - 只需除以 60.0 即可获得“正常”十进制除法:

SELECT
    StartDateTime, EndDateTime, 
    DATEDIFF(minute, StartDateTime, EndDateTime) / 60.0 AS 'Hrs Worked' 
FROM
    Table1

这将返回预期的1.25 作为您的值

【讨论】:

  • 谢谢大家(Jack Liu 和 marc_s),实际上解决方案是结合您的发帖。我必须将小数定义为 (10, 2) 并除以 60.0。如果没有这两种解决方案,结果将是一个大约有五个整数的数字(即 1.25000)。通过结合这两种解决方案,我最终得到了 1.25 的结果。多谢你们。很有帮助。
【解决方案2】:
 DECLARE @startdate DATETIME = '2019-02-28 06:00:00';
    DECLARE @enddate DATETIME = '2019-02-28  07:15:00';
    
    SELECT CAST(CAST(DATEDIFF(MINUTE, @startdate, @enddate) AS DECIMAL) /  60 AS DECIMAL(10, 2))

也许您还需要这个 post 来正确格式化它。

【讨论】:

    【解决方案3】:

    解决方案结合了 Jack Liu 和 marc_s 的建议。

    我还需要定义小数并明确设置 60.0。

    这是我正在尝试做的正确格式的示例。

    选择 开始日期时间,结束日期时间, CAST(Datediff(minute, StartDateTime, EndDateTime) / 60.0 AS Decimal(10, 2))'Hrs Worked' 从表1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 2015-04-23
      • 2022-01-15
      相关资源
      最近更新 更多