将天时分秒转换为日期时间

时间:2020-06-29 20:37:46

标签: sql-server tsql datetime servicenow servicenow-rest-api

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

如何将其转换为有用的内容?

STRING_SPLIT函数似乎无济于事,因为它将拆分值,但是我无法将它们重新组合在一起。

还是有某种方法可以在将其转换为SQL数据库之前在API中对其进行转换?

1 个答案:

答案 0 :(得分: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]

将每个值转换为秒,然后将所有内容加总起来会很容易:-)

我敢肯定有更有效的方法来执行此操作,但是它不会经常使用,因此现在就可以使用。