【发布时间】:2019-09-26 08:29:29
【问题描述】:
我在 sql server 中工作,并提供了一个文件,该文件有一个“持续时间”列,其中包含时间长度的字符串类型值,格式为 HH:MM:SS。
例子:
Duration:
00:01:34,
00:25:20,
01:01:53
我正在尝试弄清楚如何将这些字符串转换为一种数据类型,我可以使用这些数据类型来计算“平均持续时间”和“总持续时间”等我显然无法在字符串上运行的数据。
我以相同的方式格式化了所有值,并尝试使用 CAST 和 CONVERT 将数据类型更改为时间。
我的查询将开始运行并转换几千行,但随后出错并显示以下错误消息:
从字符串转换日期和/或时间时转换失败。
尝试 CAST:
SELECT CAST(Duration as time)
FROM TABLE
尝试转换:
SELECT CONVERT(time, Duration)
FROM TABLE
转换从我的文件开始,当我查看结果选项卡时,结果看起来符合预期,采用 HH:MM:SS.nnnnnnn 格式,但在几千行后查询出错。
我只是在以完全错误的方式处理这件事吗?我唯一能想到的另一件事可能是分解字符串,计算时间长度并将其存储在几秒钟内,然后在运行任何聚合计算后重新计算持续时间。不过,我希望有更直接的方法可以到达那里。
【问题讨论】:
-
听起来您有一些无法转换的值。请改用 TRY_CONVERT。然后当字符串无效时返回NULL。
标签: sql sql-server types sqldatatypes string-conversion