Sql server 如何将SQL server 24小时时间字符串转换为12小时日期时间数据类型

Sql server 如何将SQL server 24小时时间字符串转换为12小时日期时间数据类型,sql-server,tsql,datetime,Sql Server,Tsql,Datetime,我有一个名为origdttime的列,它是一个文本字段。我想把它转换成一个12小时的时间域。该字段的值为hh:mi:ss.mmm即06:46:00.000我希望此时显示为06:46 AM 我使用语句CONVERT(varchar(15),origdttime,8)作为[时间]但是它返回的格式和值完全相同 需要调整哪些内容才能返回所需的输出?试试 SELECT CONVERT(VARCHAR(15),CAST('06:46:00.000' AS TIME),100) 结果: 6:46AM 5:

我有一个名为
origdttime
的列,它是一个文本字段。我想把它转换成一个12小时的时间域。该字段的值为
hh:mi:ss.mmm
06:46:00.000
我希望此时显示为
06:46 AM

我使用语句
CONVERT(varchar(15),origdttime,8)作为[时间]
但是它返回的格式和值完全相同

需要调整哪些内容才能返回所需的输出?

试试

SELECT CONVERT(VARCHAR(15),CAST('06:46:00.000' AS TIME),100)
结果:

6:46AM
5:46PM

结果:

6:46AM
5:46PM
试试

SELECT CONVERT(VARCHAR(15),CAST('06:46:00.000' AS TIME),100)
结果:

6:46AM
5:46PM

结果:

6:46AM
5:46PM

虽然使用
FORMAT()
时性能并不总是很好,但如果您使用的是SQL Server 2012+的话,这是一个非常方便的选项,尤其是对于较小的数据集等

DECLARE @Table AS TABLE (TimeAsString VARCHAR(50))
INSERT INTO @Table VALUES ('06:46:00.000'),('17:46:00.000')

SELECT
   TimeAsString
   ,FORMAT(CAST(TimeAsString as DATETIME), 'hh:mm tt')
FROM
    @Table

虽然使用
FORMAT()
时性能并不总是很好,但如果您使用的是SQL Server 2012+的话,这是一个非常方便的选项,尤其是对于较小的数据集等

DECLARE @Table AS TABLE (TimeAsString VARCHAR(50))
INSERT INTO @Table VALUES ('06:46:00.000'),('17:46:00.000')

SELECT
   TimeAsString
   ,FORMAT(CAST(TimeAsString as DATETIME), 'hh:mm tt')
FROM
    @Table

我建议的第一件事是,当您想要存储时间值时,更改模式以保存时间值。使用文本字段保存时间值无疑会在将来导致问题。我的架构不需要更改,我希望将数据提取为时间。我建议的第一件事是在您要存储时间值时,将架构更改为保存时间值。使用文本字段保存时间值无疑会在将来引起问题。这不是我要更改的模式,我希望将数据提取为时间。