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

SQL拼接日期列与时间列为datetime类型报错,求解决方案

解决SQL日期与时间拼接转datetime的报错问题

报错原因

你使用FORMAT函数生成的日期字符串格式为yyyy:MM:dd(例如2022:08:27),这种带冒号分隔的日期格式无法被SQL Server的CONVERT(datetime, ...)识别,导致转换失败。

解决方案

根据你的数据类型,推荐以下几种高效的实现方式:

1. 原生date + time类型直接相加(最优解)

如果你的日期列是date类型、时间列是time类型,无需字符串拼接,直接相加即可得到datetime类型:

SELECT CAST(DateColumn AS DATETIME) + CAST(TimeColumn AS DATETIME) AS CombinedDatetime
FROM YourTable

2. 字符串类型日期/时间的正确拼接转换

如果是字符串类型的日期或时间值,需要生成SQL Server可识别的标准日期时间字符串(yyyy-MM-dd hh:mm:ss)再转换:

-- 用你的测试值示例
SELECT CONVERT(DATETIME, 
    FORMAT(CONVERT(DATETIME, '2022-08-27 01:00:00.000'), 'yyyy-MM-dd') + ' ' + 
    FORMAT(CONVERT(DATETIME, '2022-08-27 12:01:30.000'), 'hh:mm:ss')
) AS CombinedDatetime

这里将日期格式从yyyy:MM:dd改为yyyy-MM-dd,拼接后的字符串符合SQL Server的datetime转换规则。

3. 用CONVERT替代FORMAT(性能更优)

FORMAT函数性能较差,推荐使用CONVERT指定格式代码来生成标准字符串:

-- 测试示例
SELECT CONVERT(DATETIME, 
    CONVERT(VARCHAR, CONVERT(DATETIME, '2022-08-27 01:00:00.000'), 23) + ' ' + 
    CONVERT(VARCHAR, CONVERT(DATETIME, '2022-08-27 12:01:30.000'), 108)
) AS CombinedDatetime
  • 格式代码23对应yyyy-MM-dd
  • 格式代码108对应hh:mm:ss

内容的提问来源于stack exchange,提问作者Sumit Manandhar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:36:44