将日期和时间字符串转换为datetime



我的表中有两列,一列用于捕获时间,另一列用于捕获日期。不幸的是,两者都是varchar()。我需要获取这两个字段,将它们连接在一起,然后将它们转换为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)引入到整个查询中,它就会给我错误。

任何尝试完成此任务的帮助都是有帮助的。谢谢!

将DATE和TIME值转换为DATETIME后,可以将它们连接在一起。下面是一个示例,演示了如何连接存储为VARCHAR的DATE列和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);

你可以使用这个选项

DECLARE @date date = '20010101',
        @time time = '01:01:01'
SELECT CAST(@date AS datetime) + @time

结果:2001-01-01 01:01:01.000

SQLFiddle

是否使用SQL 2012?如果是这样,您可以使用datetimedromparts函数来实现这一点。如果不适合这个特定的示例,那么将来知道它总是好的:)

http://technet.microsoft.com/en-gb/library/hh213233.aspx

相关内容

  • 没有找到相关文章

最新更新