T-SQL:nvarchar到hh:mm:ss

时间:2017-11-03 17:31:09

标签: sql tsql

我有一个nvarchar字段,它存储一个与时间相关的值。

prophet

有关如何将其转换为可用/可用字段进行计算的任何建议吗?

SQL'time'仅允许最多23:59:59,因此存储为nvarchar。

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

字符串数据类型不是数字信息的好方法。在这种情况下,从秒开始处理将使输出成为h:m:s单位,但反过来是一个丑陋的问题。

SQL Fiddle

MS SQL Server 2014架构设置

CREATE TABLE Table1
    ([badcolumn] varchar(9), [num_secs] int)
;

INSERT INTO Table1
    ([badcolumn])
VALUES
    ('104:45:50'),
    ('99:45:50')
;

查询1

select
     badcolumn, (h*3600)+(m*60)+s as num_seconds
from table1
cross apply (
  select
      charindex(':',badcolumn) x
    , charindex(':',badcolumn, charindex(':',badcolumn)+1) y
  ) ca1
cross apply (
  select
       try_cast(substring(badcolumn,1,x-1) as int) h
     , try_cast(substring(badcolumn,x+1,y-x-1) as int) m
     , try_cast(substring(badcolumn,y+1,20) as int) s
  ) ca2

<强> Results

| badcolumn | num_seconds |
|-----------|-------------|
| 104:45:50 |      377150 |
|  99:45:50 |      359150 |