【发布时间】:2016-02-08 04:26:43
【问题描述】:
我在我的 SQL Server 数据库中以varchar 的形式存储了时间记录,我正在尝试将其转换为时间。
例如数据存储为12490811
我使用的语法是:
cast(convert(time, stuff(stuff(stuff(CommentAddedTime, 3, 0, ':'), 6, 0, ':'), 9, 0, '.')) as time(0)) as 'CommentAddedTime'
但是存储了一些无效记录,其中秒数超过 59,例如 11356000,这不允许我将 varchar 转换为时间。我想知道我们是否可以在看到写为 59 的秒数时使用 Case 语句或类似 '00' 的秒数,否则使用相同的值。我相信语法应该是这样的(我不确定在 'then' 语句中写什么):
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'
请帮我解决这个问题?或者,如果有任何其他方法可以解决这个问题,因为我无法排除这些记录。
提前致谢!
【问题讨论】:
-
字符串的格式是什么?
标签: sql sql-server-2008 time type-conversion seconds