Sql server 在查询中,如何将格式为hh:mmAM[PM]的nvarchar转换为时间

Sql server 在查询中,如何将格式为hh:mmAM[PM]的nvarchar转换为时间,sql-server,tsql,ssrs-2008-r2,Sql Server,Tsql,Ssrs 2008 R2,我需要查询一个具有“开始时间”和“结束时间”字段的记录的表。他们的数据类型是nvarchar(100),格式如下:09:30AM 我需要对这些字段进行前后比较,为此我需要使用时间数据格式。(如果我错了,请纠正我)。 在查询中,如何转换开始时间和结束时间,以便进行比较 注意:我已尝试转换(时间、开始时间),但从字符串错误消息转换日期和/或时间时,转换失败。原因很简单: SELECT CONVERT(TIME, '09:30AM') 或 如果转换失败,这意味着您在某处有一些不好的数据,我建议使用I

我需要查询一个具有“开始时间”和“结束时间”字段的记录的表。他们的数据类型是nvarchar(100),格式如下:09:30AM

我需要对这些字段进行前后比较,为此我需要使用时间数据格式。(如果我错了,请纠正我)。 在查询中,如何转换开始时间和结束时间,以便进行比较

注意:我已尝试转换(时间、开始时间),但从字符串错误消息转换日期和/或时间时,转换失败。

原因很简单:

SELECT CONVERT(TIME, '09:30AM')

如果转换失败,这意味着您在某处有一些不好的数据,我建议使用If you have 2012+,如果转换失败,它将返回
NULL

SELECT TRY_CONVERT(TIME, '09:30AMBadDataHere')

使用您的示例转换为时间效果很好。选择转换(时间,'09:30AM')。这很可能意味着你在某个地方有一些不好的数据……这是一个很好的例子,说明了为什么使用正确的数据类型是如此重要。当然,使用正确的数据类型是更好的选择。
SELECT TRY_CONVERT(TIME, '09:30AMBadDataHere')