如何用T-SQL将Varchar类型的日期时间列转换为DateTime类型
合并varchar类型的日期和时间为DateTime
针对你的场景,有两种可靠的方法可以一次性完成合并转换:
方法1:直接拼接字符串后转换
因为你的MyDate是YYYYMMDD格式,MyTime是HHMMSS格式,两者拼接后正好是SQL Server可识别的YYYYMMDDHHMMSS日期时间字符串,直接转换即可:
SELECT CONVERT(datetime, MyDate + MyTime) AS CombinedDateTime FROM MyTable;
或者使用CAST函数效果一致:
SELECT CAST(MyDate + MyTime AS datetime) AS CombinedDateTime FROM MyTable;
方法2:分步添加时间分量(更稳妥)
如果担心字符串拼接可能出现的格式异常,可以先将日期转为date类型,再依次添加小时、分钟、秒分量:
SELECT DATEADD(SECOND, CAST(RIGHT(MyTime, 2) AS INT), DATEADD(MINUTE, CAST(SUBSTRING(MyTime, 3, 2) AS INT), DATEADD(HOUR, CAST(LEFT(MyTime, 2) AS INT), CONVERT(date, MyDate) ) ) ) AS CombinedDateTime FROM MyTable;
你之前尝试失败的原因
CONVERT(time, MyTime, 101):101是日期格式代码(对应MM/DD/YYYY),不适用于时间类型转换,无法解析HHMMSS格式的字符串。CAST(MyTime as datetime):MyTime是纯数字字符串,不符合datetime的有效格式,直接转换会报错。CONVERT(varchar(15),MyTime,103):误用了日期格式代码103(对应DD/MM/YYYY),无法处理时间字符串。
内容的提问来源于stack exchange,提问作者user12847070
相关产品推荐
相关产品推荐

