我有时间记录存储在我的SQL Server数据库中作为varchar
,我试图将其转换为时间。SQL Server:将varchar转换为具有无效记录的时间(秒写为60)
例如,数据存储为12490811
我使用的语法:
cast(convert(time, stuff(stuff(stuff(CommentAddedTime, 3, 0, ':'), 6, 0, ':'), 9, 0, '.')) as time(0)) as 'CommentAddedTime'
但也有存储一些无效的记录,其中秒超过59像11356000这并不让我将varchar
转换为时间。我想知道,如果我们可以使用Case语句或者像'00'这样的东西,在看到写入59的秒数时使用秒,否则使用相同的值。我相信语法应该是这样的(我不知道该怎么在“然后”语句写):
select
case
when substring(stuff(stuff('11356000', 3, 0, ':'), 6, 0, ':'),7,10) > 5900
then ....
else
cast(convert(time, stuff(stuff(stuff(CommentAddedTime, 3, 0, ':'), 6, 0, ':'), 9, 0, '.')) as time(0))
end as 'CommentAddedTime'
请帮助我什么,我们可以怎样做呢?或者,如果有任何其他方法来解决这个问题,因为我不能排除这些记录。
在此先感谢!
是什么格式的字符串? –