Есть ли способ использовать CAST (или CONVERT) в SQL, чтобы превратить символьную строку в объект времени? - PullRequest
0 голосов
/ 09 января 2012

В моей базе данных есть поле, содержащее 16-байтовый массив символов, и я вставил 2 неподписанных символа в первые два байта массива. Теперь эти 2 неподписанных байта содержат значение времени, разделенное на байт для значения часа, а другой байт - для значения минуты. При просмотре этих значений в базе данных я получаю странные символы, так как база данных считает, что она имеет дело с 16-байтовым массивом символов, поэтому мне было интересно, что мне нужно сделать, чтобы просмотреть значение времени, представленное первыми 2 байтами массива? Я пробовал следующее, чтобы не преобладать.

SELECT TOP 1000 [reference]
      ,CAST(extra1 as time)
FROM [DB NAME].[DB TABLE]

extra1 - это имя столбца в базе данных, в которой хранятся 16-байтовые значения массива символов, которые вы можете увидеть здесь. Я пытаюсь привести его как объект времени, но он не работает после нажатия кнопки «Выполнить».

Любая помощь будет высоко ценится, хотя, пожалуйста, не спрашивайте о том, почему я вставил 2 неподписанных байта в 16-байтовый массив символов, это длинная история; -)

1 Ответ

1 голос
/ 09 января 2012

Не очень элегантно, но должно работать:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...