如何使用SQL Server从TimeStamp中提取小时和提及AM或PM?

时间:2016-12-11 08:25:23

标签: sql-server rdbms

我有一个名为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?

1 个答案:

答案 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') 

<强>结果:

enter image description here

<强>更新

用于删除前导零:

有两种方法: -

最难的一个: -

使用下一个代码:

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') 

<强>结果:

enter image description here