2014-01-08 65 views
1

我有一個數據庫,我正在設計前端軟件的白癡在哪裏認爲有必要創建一個單獨的日期和時間字段,但留下日期列DATETIME列和時間作爲VARCHAR列。結合不同的日期和時間列SQL

本質上我的日期和時間如下所示:

日期|時間

2007-10-06 00:00:00.000 | 1135

而不是隻將2列1列作爲合適的日期時間。

我想2結合在一起,所以我可以確切地達致這,結合這兩套信息轉換成即

2007-10-06 11適當DATETIME場:35:00.000

這有點困難。

我以爲我可以逃脫

DECLARE @date DATETIME 
DECLARE @time VARCHAR 

SET @date = '2007-10-06 00:00:00.000' 
SET @time = '1125' 

SELECT TOP 1 
    @date + (SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 2 , 2) 
       + ':00') 

不幸的是沒有,現在我覺得我在得太多問題,只是撞到牆牆後。

誰能幫助這個問題,並指出,以我在哪裏,我錯了:/

+0

這種替換最終查詢:'SELECT @date +(SUBSTRING(@time,1,2)+ ':' + SUBSTRING(@time ,3,2)+':00')'。 –

+0

@KarthikDV - Msg 241,Level 16,State 1,Line 7 從字符串中轉換日期和/或時間時轉換失敗。 :/ – Lynchie

+1

@Lynchie,我已經測試過這個示例!看到完整的代碼在這裏:'DECLARE @date DATETIME DECLARE @time VARCHAR(4) SET @date = '2007-10-06 00:00:00.000' SET @time = '1125' SELECT @date +(SUBSTRING(@time,1,2)+':'+ SUBSTRING(@time,3,2)+':00')'。 –

回答

3

定義大小的varchar變量@time。缺省值爲1.

您還需要將第二個子字符串更改爲3,2

DECLARE @date DATETIME 
DECLARE @time VARCHAR(4) 

SET @date = '2007-10-06 00:00:00.000' 
SET @time = '1125' 

SELECT TOP 1 
    @date + (SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 3 , 2) 
       + ':00') 
+0

Mikael,這是非常感謝。 – Lynchie

2

這是我怎麼會寫

DECLARE @date DATETIME = '2007-10-06T00:00:00' 
DECLARE @time VARCHAR(4) = '1125' 

SELECT @date + stuff(@time, 3,0, ':')