Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在SQL中使用CAST(或CONVERT)将字符串转换为时间对象?_Sql_Sql Server 2008_Casting - Fatal编程技术网

有没有办法在SQL中使用CAST(或CONVERT)将字符串转换为时间对象?

有没有办法在SQL中使用CAST(或CONVERT)将字符串转换为时间对象?,sql,sql-server-2008,casting,Sql,Sql Server 2008,Casting,我的数据库中有一个字段,它包含一个16字节的字符数组,我在数组的前两个字节中插入了两个无符号字符。现在,这两个无符号字节将时间值分成一个字节表示小时值,另一个字节表示分钟值。在数据库中查看这些值时,我会得到wierd符号,因为数据库认为它处理的是一个16字节的字符数组,所以我想知道我需要做什么才能查看数组前2个字节表示的时间值? 我尝试了以下方法,但没有成功 SELECT TOP 1000 [reference] ,CAST(extra1 as time) FROM [DB NAME

我的数据库中有一个字段,它包含一个16字节的字符数组,我在数组的前两个字节中插入了两个无符号字符。现在,这两个无符号字节将时间值分成一个字节表示小时值,另一个字节表示分钟值。在数据库中查看这些值时,我会得到wierd符号,因为数据库认为它处理的是一个16字节的字符数组,所以我想知道我需要做什么才能查看数组前2个字节表示的时间值? 我尝试了以下方法,但没有成功

SELECT TOP 1000 [reference]
      ,CAST(extra1 as time)
FROM [DB NAME].[DB TABLE]
extra 1
是数据库中列的名称,其中包含16字节字符数组值,您可以在这里看到,我正试图将其转换为时间对象,但单击“执行”后失败


任何帮助都将不胜感激,尽管请不要问我为什么将2个无符号字节插入16字节字符数组,说来话长;-)

不是很优雅,但应该可以:

SELECT TOP 1000 [reference]
    ,CAST(
        (cast(ascii(substring(extra1 ,1,1)) as varchar) + ':' + CAST(ascii(substring(extra1 ,2,1)) as varchar)
        as time)
FROM [DB NAME].[DB TABLE]

如果您必须多次使用此功能,我建议您创建一个SQL函数,从
varchar
返回
time
,以避免出现这种丑陋的情况。非常感谢您自己的帮助,非常感谢!