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

SQL Server中Varchar转Datetime报错(格式为hh:mm:AM/PM)如何解决?

解决SQL Server中'hh:mm:AM/PM'格式字符串转datetime失败的问题

你遇到的错误根源是SQL Server无法直接识别hh:mm:AM/PM这种格式的字符串——标准时间格式里,分钟与AM/PM标识之间不存在冒号。解决思路是先修正字符串格式,再执行转换操作。

核心解决方案

先替换掉分钟和AM/PM之间的冒号,将hh:mm:AM转为hh:mm AM(同理处理PM格式),再进行类型转换:

基础转换语句

SELECT CAST(
    REPLACE(REPLACE([open], ':AM', ' AM'), ':PM', ' PM') 
AS DATETIME) AS [open_time]
FROM [dbo].[museum_hours]

兼容无效数据的版本

如果列中存在格式不规范的记录,用TRY_CAST替代CAST,会返回NULL而非直接抛出错误,便于排查无效数据:

SELECT TRY_CAST(
    REPLACE(REPLACE([open], ':AM', ' AM'), ':PM', ' PM') 
AS DATETIME) AS [open_time]
FROM [dbo].[museum_hours]

另一种可选方法(PARSE函数)

若服务器语言环境为英语,也可使用PARSE函数配合格式修正完成转换:

SELECT PARSE(
    REPLACE(REPLACE([open], ':AM', ' AM'), ':PM', ' PM') 
AS DATETIME USING 'en-US') AS [open_time]
FROM [dbo].[museum_hours]

内容的提问来源于stack exchange,提问作者Duy Phan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:22:38