如果您只有一个存储为char
的时间字段并以军事时间显示示例(1015),并且您只想使用sql代码将其格式化为标准时间,该怎么办?有没有办法做到这一点?
更新:
为了澄清,我将“标准时间”定义为下午6:30或凌晨4:30。
答案 0 :(得分:1)
第一步是在你的军事时间插入冒号:
DECLARE @Time CHAR(4) = '1015';
SELECT STUFF(@Time, 3, 0, ':');
给出了10:15
然后您可以将其转换为时间数据类型:
DECLARE @Time CHAR(4) = '1015';
SELECT CONVERT(TIME, STUFF(@Time, 3, 0, ':'));
给出了10:15:00.0000000
最后,您可以使用样式100转换回varchar,以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
数据类型存储时间,并在表示层中执行所有格式化。