将军用时间转换为标准时间 AM/PM Microsoft SQL

Convert time from Military to standard AM/PM Microsoft SQL

如果您只有一个存储为 char 并以军用时间显示的时间字段,例如 (1015),您只想使用 sql 将其格式化为标准时间怎么办?代码。有办法吗?

更新:

澄清一下,我将 "standard time" 定义为 6:30 下午或 4:30AM。

第一步是在你的军事时间中插入一个冒号:

DECLARE @Time CHAR(4) = '1015';
SELECT  STUFF(@Time, 3, 0, ':');

这给出了 10:15

然后你可以把它转换成Time数据类型:

DECLARE @Time CHAR(4) = '1015';
SELECT  CONVERT(TIME, STUFF(@Time, 3, 0, ':'));

这给出 10:15:00.0000000

最后您可以转换回 varchar,使用样式 100 以 12 小时格式获取它:

DECLARE @Time CHAR(4) = '1015';
SELECT  CONVERT(VARCHAR(7), CONVERT(TIME, STUFF(@Time, 3, 0, ':')), 100);

这给出了 10:15AM

DECLARE @Time CHAR(4) = '2157';
SELECT  CONVERT(VARCHAR(7), CONVERT(TIME, STUFF(@Time, 3, 0, ':')), 100);

这给出了 9:57PM

处理这个问题的标准方法是使用 TIME 数据类型存储时间,并在表示层中进行所有格式化。