1

我有一个像这样的查询,

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格式?

4

2 回答 2

5

几年前,我写了这个方便的指南,今天仍然对我有帮助 - 主要是因为我永远无法记住所有不同风格数字的含义:

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

在我的时区,这将返回:

9:12:55 AM

这并不是想要的——您可以使用REPLACE,或者STUFF如果删除该空间真的很重要。例如

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
于 2012-09-26T13:13:16.377 回答
2

你应该做这个:

SELECT CONVERT(VARCHAR(10),GETDATE(),108) AS getTime
于 2012-09-26T13:00:37.673 回答