【问题标题】:How to remove trailing zeroes from datediff results?如何从 datediff 结果中删除尾随零?
【发布时间】:2021-03-29 13:29:11
【问题描述】:

我有一个 startDateTime 和 endDateTime。我试图以小时为单位找出它们之间的总差异。 我使用 DATEDIFF() 来获得小时的差异,(但以分钟格式,所以十小时 30 分钟将是 630 分钟)。我除以 60 得到总余数(因为使用天数根据边界规则四舍五入为 1)

开始日期类似于 2020-12-03 10:00:00.000,格式上与结束日期相同

SELECT DATEDIFF(minute,startDateTime,endDateTime) / 60.0 AS [CalculatedDate]
FROM [dbo].[ATable]

生产

CalculatedDate
-------------
10.50000
9.500000
7.500000

试图弄清楚如何将尾随零删除为仅 10.5、9.5 等。

尝试了圆形、投射和其他一些东西。

【问题讨论】:

    标签: sql sql-server string tsql datetime


    【解决方案1】:

    你可以转换成你想要的定长格式:

    SELECT CONVERT(DECIMAL(10, 1), DATEDIFF(minute, startDateTime, endDateTime) / 60.0) AS [CalculatedDate]
    FROM [dbo].[ATable]
    

    【讨论】:

    • 错误信息,你确定你写对了吗?
    • SELECT CONVERT(DECIMAL(10, 2), DATEDIFF(minute,startDateTime,endDateTime) / 60.0) AS [CalculatedDate]
    【解决方案2】:

    你想要format()吗?

    SELECT 
        FORMAT(
            DATEDIFF(minute,startDateTime,endDateTime) / 60.0,
            '#.#####'
        ) AS [CalculatedDate]
    FROM [dbo].[ATable]
    

    这允许最多 5 个十进制数字。仅显示有效数字(因此,10.50000 通常显示为10.5)。如果有效小数位数超过 5 位,则将值四舍五入到最接近的第 5 位小数。

    我应该指出这会返回一个 string 数据类型。

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 2012-07-01
      • 2012-07-02
      • 2011-05-30
      • 2015-06-16
      • 2020-09-25
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多