0

我正在使用 REST API 从 ServiceNow 检索数据,对于某些列,我得到类似于“2 天 4 小时 43 分钟 29 秒”的值。

我怎样才能把它变成有用的东西?

STRING_SPLIT函数似乎没有帮助,因为它会拆分值,但我无法将它们重新组合在一起。

或者有什么方法可以在它到达 SQL 数据库之前在 API 中进行转换?

4

1 回答 1

0

好的,我想我已经想出了如何使用 LEFT、SUBSTRING 和 CHARINDEX 的组合来拆分值。

结果是这样的:

,CASE WHEN [calendar_duration] LIKE '%Day%' THEN LEFT(SUBSTRING([calendar_duration],CHARINDEX(' Day', [calendar_duration]) -2, 2),CHARINDEX(' Day', [calendar_duration]) - 1) ELSE '00' END AS [Days]
  ,CASE WHEN [calendar_duration] LIKE '%Hour%' THEN LEFT(SUBSTRING([calendar_duration],CHARINDEX(' Hour', [calendar_duration]) -2, 2),CHARINDEX(' Hour', [calendar_duration]) - 1) ELSE '00' END AS [Hours]
  ,CASE WHEN [calendar_duration] LIKE '%Minute%' THEN LEFT(SUBSTRING([calendar_duration],CHARINDEX(' Minute', [calendar_duration]) -2, 2),CHARINDEX(' Minute', [calendar_duration]) - 1) ELSE '00' END AS [Minutes]
  ,CASE WHEN [calendar_duration] LIKE '%Second' THEN LEFT(SUBSTRING([calendar_duration],CHARINDEX(' ', [calendar_duration]) -2, 2),CHARINDEX(' Seconds', [calendar_duration]) - 1) ELSE '00' END AS [Seconds]

将每个值转换为秒,然后总结所有内容应该更容易:-)

我确信有更有效的方法可以做到这一点,但它不会经常使用,所以现在就可以了。

于 2020-06-29T21:49:26.257 回答