【发布时间】:2013-12-04 16:33:49
【问题描述】:
我有一个返回电话数据摘要的存储过程,其中一个摘要是总通话时长,可以从 1 到 100 小时不等。
当前返回 this 的代码是:
SELECT CAST(SUM(CAST(D.CallDuration AS FLOAT)) AS DATETIME) AS [Total Duration]
FROM MyTable D
这对于 24 小时以下的值返回 1900-01-01 02:59:21.997 值,对于超过 24 小时的值返回 1900-01-02 07:51:24.997,这是我所期望的。
我正在尝试使用 OLE 连接将其输入 Excel 仪表板,但当我这样做时,值 1900-01-01 02:59:21.997(在公式栏中可见)显示为 26:59:21 而不是 02:59:21。
据我所知,这是因为 Excel 使用 00/01/1900 作为“时间”值,而 SQL Server 使用 01/01/1900。
有没有办法让它正常显示为小时和分钟的时间值?我宁愿避免使用字符串,因为它必须在其他地方用作值。
【问题讨论】:
-
@pnuts 遗憾的是不,对于值 > 1 我需要显示总小时数(例如 26)
-
@pnuts 抱歉,我知道这很令人困惑,对于值
1900-01-02 07:51,我想显示31:51。如果可能的话,我也不想使用新列。 -
我本来建议去掉日期,只使用时间,但这听起来不是你想要的。这只留下了从 SQL 服务器输出无效日期或让 excel 以不同方式翻译日期的选项。对吗?
-
@pnuts 抱歉,是的,这给出了正确的值,但我真的想避免更多的列,我有几个列有同样的问题,它会给用户增加很多(希望是不必要的)复杂性,如果可能的话,我宁愿在服务器上完成所有艰苦的工作/意大利面条代码。
标签: sql sql-server excel sql-server-2008