2013-01-04 41 views
0

我有兩列數據例如插入軍用時間爲datetime列

Row_Date  
2013-01-03-00:00:00 

Starttime 
130 

我需要的是採取的開始時間,並把這個到小時和分鐘領域,如

一個 date_time
Datetime 
2013-01-03-01:30:00 

所有我可以在此刻管理是輸入使用follwing命令(這個我在別處找到)小時

,CAST(DATEADD(HOUR, StartTime/100, CONVERT(char(12), ROW_DATE, 112)) 
                 AS DATETIME) AS DATE_TOME 

我可以理解爲什麼這不起作用,因爲它將開始時間除以100,這只是小時而不是分鐘,但我無法弄清楚如何包括分鐘。其他

一個命令,我發現,但無法得到工作是:

,CAST(CAST(row_date AS VARCHAR(8)) + ' ' 
+ STUFF(RIGHT('000' + CAST(StartTime AS VARCHAR(4)), 4), 3,0, ':') AS DATETIME) 

再此在別處找到了,但我得到了以下錯誤:

Conversion failed when converting date and/or time from character string.

+0

爲什麼你想爲_format_「DATETIME」專欄?格式爲_display_時的字符串,因爲數據庫將以某種內部格式存儲它。 – Oded

+0

爲什麼'starttime'列的數據類型是整數而不是時間? – JJJ

+0

starttime colum來自另一個數據源(avaya),令人討厭的是它是如何遇到的。我想它不需要像這樣格式化,但仍然需要包含starttime的分鐘數,而不僅僅是starttime/100的結果。我開始認爲我需要將開始時間轉換爲適當的時間格式,然後將其包含在date_time列表中 – nvidamour

回答

2
CAST(DATEADD(MINUTE, 60 * FLOOR(StartTime/100) + StartTime % 100, CONVERT(char(12), ROW_DATE, 112)) AS DATETIME) AS DATE_TOME 
+0

即將出現但不完全正確 結果 2013-01-03 02:48:00.000 – nvidamour

+0

問題是什麼? – ic3b3rg

+0

其中增加了分鐘,但是,輸出是這樣的2013-01-03 02:48:00.000這是當230的開始時間,所以不是把30放入它已放48英寸真的很討厭日期時間計算 – nvidamour