T-SQL 2008将日期和时间字符串转换为日期时间
我的表中有两列,一列用于捕获时间,另一列用于捕获日期。不幸的是,两者都是varchar。我需要将这两个字段连接在一起,然后将它们转换为datetime 我正试图通过以下方式实现这一目标: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
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。对不起,应该指定的。谢谢,这是为我做的!谢谢,这是为我做的!