有没有办法在SQL中使用CAST(或CONVERT)将字符串转换为时间对象?
我的数据库中有一个字段,它包含一个16字节的字符数组,我在数组的前两个字节中插入了两个无符号字符。现在,这两个无符号字节将时间值分成一个字节表示小时值,另一个字节表示分钟值。在数据库中查看这些值时,我会得到wierd符号,因为数据库认为它处理的是一个16字节的字符数组,所以我想知道我需要做什么才能查看数组前2个字节表示的时间值? 我尝试了以下方法,但没有成功有没有办法在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
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
,以避免出现这种丑陋的情况。非常感谢您自己的帮助,非常感谢!