【问题标题】:Converting varchar in hh:mm:ss.nnnn format to actual time format in SQL Server将 hh:mm:ss.nnnn 格式的 varchar 转换为 SQL Server 中的实际时间格式
【发布时间】:2021-08-12 22:17:07
【问题描述】:

我对 SQL 比较陌生,遇到了一个我无法解决的转换问题。

我目前有一个表,其中包含以下varchar 列:

Logged_Off_Duration
8:59:41.000
7:16:05.000
7:02:22.000
9:13:32.000
0
14:22:56.000
10:39:00.000
7:37:59.000
6:57:57.000

我需要将这些值转换为时间格式 (hh:mm:ss),但如上表所示,我有超过 9 小时的行(24 小时格式)以及我所在的行只需有一个 0(零)。有人能帮我转换吗?我尝试了一些简单的 cast 和 convert 语句,但我一直遇到这个问题:

消息 241,第 16 级,状态 1,第 1 行
从字符串转换日期和/或时间时转换失败

【问题讨论】:

  • 完美修复您的设计;不要使用varchar 来存储数据和时间值。根据您的数据,例如,“时间”'6:57:57.000' '14:22:56.000'之后。

标签: sql sql-server time type-conversion data-conversion


【解决方案1】:

只需使用try_convert():

select try_convert(time, Logged_Off_Duration)

无法转换的值(例如0)作为NULL 值返回。

【讨论】:

    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多