将军用时间转换为标准时间 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
数据类型存储时间,并在表示层中进行所有格式化。
如果您只有一个存储为 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
数据类型存储时间,并在表示层中进行所有格式化。