SQL - 使用hh:mm:ss将日期时间格式转换为12小时格式

时间:2012-09-26 12:58:14

标签: sql-server-2008

我有一个像

这样的查询
SELECT CONVERT(VARCHAR, getdate(), 100) AS TwelveHH

上述查询的输出为Sep 26 2012 6:02PM&我想从上面的查询中获取小时数,我将使用像

这样的查询
SELECT RIGHT(CONVERT(VARCHAR, getdate(), 100), 7) AS getTime

上述查询的输出为6:02PM

但是,我希望输出 ,如6:02:19PM - (hh:mm:ss)格式。

如何获得 hh:mm:ss 格式?

2 个答案:

答案 0 :(得分:5)

几年前我写了this handy guide,今天仍然对我很有帮助 - 主要是因为我无法记住所有不同风格数字的含义:

SELECT LTRIM(RIGHT(CONVERT(CHAR(20), CURRENT_TIMESTAMP, 22), 11));

在我的时区,这会返回:

9:12:55 AM

这不是正好您想要的 - 如果移除该空间非常重要,您可以使用REPLACESTUFF。 e.g。

SELECT REPLACE(LTRIM(RIGHT(CONVERT(CHAR(20), CURRENT_TIMESTAMP, 22), 11)), ' ', '');

在SQL Server 2012中,您可以更轻松地完成此操作 - 您可以使用C#格式化格式:

SELECT FORMAT(CURRENT_TIMESTAMP, 'h:mm:ss tt');

编辑根据以下评论中的新要求和更改要求:

SELECT CONVERT(CHAR(11), CURRENT_TIMESTAMP, 109)
 + ' ' + LTRIM(RIGHT(CONVERT(CHAR(20), CURRENT_TIMESTAMP, 22), 11));

结果:

Sep 26 2012 10:03:52 AM

答案 1 :(得分:2)

你应该这样做:

SELECT CONVERT(VARCHAR(10),GETDATE(),108) AS getTime