我有一个名为Transaction的表。其中一个字段名称是Time,它是TimeStamp数据类型。所以结果就像这个2015-01-17 08:12:48.000
现在我想分开几小时,接着是AM PM,如
2015-01-17 08:12:48.000 8AM
2015-01-17 15:12:48.000 3PM
我使用此代码CONVERT(VARCHAR(2),RIGHT(Time,7),108) hour
分隔一小时,得到类似8
的输出。怎么说AM / PM?
答案 0 :(得分:1)
尝试下一个代码:
SELECT FORMAT(CAST(ColumnName AS DATETIME),'hh tt')
示例:强>
SELECT FORMAT(CAST('2015-01-17 08:12:48.000' AS DATETIME),'hh tt') Time
union all
SELECT FORMAT(CAST('2015-01-17 15:12:48.000' AS DATETIME),'hh tt')
<强>结果:强>
<强>更新强>
用于删除前导零:
有两种方法: -
最难的一个: -
使用下一个代码:
SELECT substring(convert(varchar(5), FORMAT(CAST('2015-01-17 08:12:48.000' AS DATETIME),'hh tt'), 108), patindex('%[^0]%',convert(varchar(5), FORMAT(CAST('2015-01-17 08:12:48.000' AS DATETIME),'hh tt'), 108)), 10) Time
union all
SELECT substring(convert(varchar(5), FORMAT(CAST('2015-01-17 15:12:48.000' AS DATETIME),'hh tt'), 108), patindex('%[^0]%',convert(varchar(5), FORMAT(CAST('2015-01-17 15:12:48.000' AS DATETIME),'hh tt'), 108)), 10)
Simplist One: - (通过 David Dubois )
使用下一个格式h tt
,如下所示:
SELECT FORMAT(CAST(ColumnName AS DATETIME),'h tt')
示例:
SELECT FORMAT(CAST('2015-01-17 08:12:48.000' AS DATETIME),'h tt') Time
union all
SELECT FORMAT(CAST('2015-01-17 15:12:48.000' AS DATETIME),'h tt')
<强>结果:强>