2013-03-08 122 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

相关问题