2012-01-09 41 views
0

我在我的數據庫中有一個字段,它包含一個16字節的字符數組,並且我將2個無符號字符插入數組的前兩個字節。現在這2個無符號字節保存時間值,該時間值被分成一個小時值的字節和另一個字節作爲分鐘值。當在數據庫中查看這些值時,我會得到更奇怪的符號,因爲數據庫認爲它處理的是16字節的char數組,所以我想知道爲了查看由數組的前2個字節表示的時間值,我需要做什麼? 我已經嘗試過以下幾點以否決爲準。有沒有在SQL中使用CAST(或CONVERT)將字符串轉換爲時間對象的方法?

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

extra1是在數據庫中的列,其中包含16個字節的字符數組值,你可以在這裏看到我'嘗試投放的時間對象的名稱,但點擊後執行失敗。

任何幫助將非常感激,但請不要問我爲什麼堅持了2個無符號字節到16字節的字符數組,它的一個漫長的故事;-)

回答

1

不是很優雅,但應該工作:

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] 
+0

如果你必須使用很多次我勸告創建一個SQL函數從'varchar'返回'time',以避免這種醜陋各地 – GolfWolf 2012-01-09 16:17:58

+0

非常感謝您的幫助w0lf,非常感謝! – 2012-01-09 16:53:37

相關問題