You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:22:12