【发布时间】:2020-12-29 04:48:59
【问题描述】:
我在将字符串转换为时间以便使用另一个合法时间字段执行 DATEDIFF() 计算时遇到问题。我的最终目标是在 SSRS 中创建报告。
我能够在 SSMS 中执行此任务的唯一方法是使用:
,CAST(msdb.dbo.agent_datetime('19000101', P.[3]+'00') AS TIME(0)) AS [Reached Time]
P.[3]是一个字符串字段(示例值为 0744)。由于“msdb.dbo.agent_datetime”的格式,我添加了毫秒的 +'00'。
以上在 SSMS 中完美运行,并给出 07:44:00 的值。但是,这个“msdb.dbo.agent_datetime”函数在 SSRS 中不起作用。仅当我删除任何提及“msdb.dbo.agent_datetime”时,我的报告才会运行。
我需要一种不同的方法来将此字符串值(例如 0744)更改为 07:44 或 07:44:00 的合法时间值。
我试过了:
FORMAT(CONVERT(INT,P.[3]), 'HH:mm', 'en-us') --Returns value of HH:mm
CONVERT(VARCHAR, P.[3], 24) --Returns value of 0744
CONVERT(TIME, P.[3]) --Returns value of 00:00:00.0000000
CAST(P.[3] AS TIME) --Returns value of 00:00:00.0000000
CAST(CONVERT(INT,P.[3]) AS TIME) --Explicit conversion from data type int to time is not allowed.
其他组合也会出错。我什至尝试在 SSRS 中格式化时间,但没有成功。
我可以通过修改字符串使它看起来像一个时间,但是不能用 DATEDIFF() 执行计算
请帮忙!
【问题讨论】:
标签: sql-server tsql reporting-services ssms