【发布时间】:2018-07-11 19:34:21
【问题描述】:
从源数据库中,我得到 HH:MM:SS 为 832:24:12
目前我正在使用以下语句,该语句在大多数情况下都可以正常工作 hh:mm:ss 但当小时数超过 99 时它会失败
ISNULL(LEFT(COLUMN,2) * 3600 + RIGHT(LEFT(COLUMN,5),2) * 60 + RIGHT(COLUMN, 2) ,0)
【问题讨论】:
-
[Column] 是 varchar,通常为 23:34:12(即 HH:MM:SS),但在某些情况下超过小时数,为 832:24:12
-
它不为空,但在 HH:MM:SS 中,小时值 > 24 所以我无法使用上述语句或任何日期函数。
-
我刚刚使用下面的语句不知道是否正确 (SUBSTRING(COLUMN,0,(CHARINDEX(':',COLUMN,0)))*3600)+(LEFT(RIGHT (COLUMN,5),2)*60)+RIGHT(COLUMN,2)
-
所以您的列值为
832:24:12,您的预期输出是什么? (什么数据类型?) -
在上述情况下,832 是小时,24 是分钟,12 是秒。输出应该是整数 832*3600+ 24*60+12
标签: sql-server tsql datetime sql-server-2012