将时间从Military转换为标准AM / PM Microsoft SQL

时间:2015-06-03 14:21:01

标签: sql sql-server time-format

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

更新:

为了澄清,我将“标准时间”定义为下午6:30或凌晨4:30。

1 个答案:

答案 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数据类型存储时间,并在表示层中执行所有格式化。