T-SQL 2008将日期和时间字符串转换为日期时间

T-SQL 2008将日期和时间字符串转换为日期时间,sql,datetime,time,concatenation,varchar,Sql,Datetime,Time,Concatenation,Varchar,我的表中有两列,一列用于捕获时间,另一列用于捕获日期。不幸的是,两者都是varchar。我需要将这两个字段连接在一起,然后将它们转换为datetime 我正试图通过以下方式实现这一目标: select CONVERT(datetime,(select txt_returned_date+' '+CONVERT(varchar(20),CONVERT(TIME,txt_time_returned))),126) from table_name 我收到以下错误消息: Conversion fai

我的表中有两列,一列用于捕获时间,另一列用于捕获日期。不幸的是,两者都是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的字符串

我在这里做的是将时间的字符串转换为时间,然后返回到varchar。然后我将它们连接在一起。这本身是有效的,但一旦我将CONVERTdatetime引入整个查询,它就会给我带来错误


任何试图实现这一目标的帮助都是有益的。谢谢

转换为日期时间后,可以将日期和时间值连接在一起。下面是一个示例,展示了如何连接已存储为VARCHAR的日期列和时间列:

-- 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);

转换为日期时间后,可以将日期和时间值连接在一起。下面是一个示例,展示了如何连接已存储为VARCHAR的日期列和时间列:

-- 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.000


演示

您可以使用此选项

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

SELECT CAST(@date AS datetime) + @time
结果:2001-01-01:01:01.000


演示

您正在使用SQL 2012吗?如果是这样,您可以使用datetimedromparts函数来实现这一点。如果不是因为这个具体的例子,那么了解未来总是好的:


您正在使用SQL 2012吗?如果是这样,您可以使用datetimedromparts函数来实现这一点。如果不是因为这个具体的例子,那么了解未来总是好的:


不,SQL 2008。抱歉,应该指定。否,SQL 2008。对不起,应该指定的。谢谢,这是为我做的!谢谢,这是为我做的!