如果您有一个存储为char并以军事时间显示的时间字段(例如(1015) ),并且您只想使用sql代码将其格式化为标准时间,那么该怎么办?有办法吗?
更新:
为了澄清,我将“标准时间”定义为下午6:30或凌晨4:30。
发布于 2015-06-03 14:35:48
第一步是在军事时间中插入一个冒号:
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
最后,您可以将其转换回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数据类型存储时间,并在表示层中执行所有格式设置。
https://stackoverflow.com/questions/30622822
复制相似问题