2013-03-08 162 views
1

我在表格中有兩列,一個用於捕獲時間,另一個用於捕獲日期。不幸的是,兩者都是varchar()。我需要將這兩個字段連接在一起,然後將它們轉換爲datetime。T-SQL 2008將日期和時間字符串轉換爲datetime

我試圖完成與此:

select CONVERT(datetime,(select txt_returned_date+' '+CONVERT(varchar(20),CONVERT(TIME,txt_time_returned))),126) 
from table_name 

我收到此錯誤信息:

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

日期被捕獲爲「20130308」作爲一個字符串。時間被捕獲爲「4:27 PM」作爲字符串

我在這裏做的是將時間字符串轉換爲TIME,然後返回到varchar。然後我將它們連接在一起。這本身是有效的,但是一旦我將CONVERT(datetime)引入到整個查詢中,它就會給我帶來錯誤。

任何幫助嘗試完成此操作都很有幫助。謝謝!

回答

4

您可以將DATE和TIME值一起轉換爲DATETIME後連接在一起。下面是與演示了連接DATE列,並已被存儲爲VARCHAR TIME列打一個樣本:

-- Set up some variables to test with 
DECLARE @myTime TIME = GETDATE() 
    , @myDate DATE = GETDATE() 
    , @myTimeTxt VARCHAR(16) 
    , @myDateTxt VARCHAR(10); 

-- Initialize your variables 
SELECT @myTimeTxt = @myTime 
    , @myDateTxt = @myDate; 

-- Display your separated values 
SELECT @myDateTxt, @myTimeTxt; 

-- Display your concatenated value 
SELECT CAST(@myDateTxt AS DATETIME) + CAST(CAST(@myTimeTxt AS TIME) AS DATETIME); 
+1

感謝,這爲我做! – 2013-03-08 21:42:23

1

您可以使用此選項

DECLARE @date date = '20010101', 
     @time time = '01:01:01' 

SELECT CAST(@date AS datetime) + @time 

結果:2001-01-01 01:01:01.000

演示on SQLFiddle

相關問題