如何仅在SQL查询中使用AM/PM显示时间?

Apo*_*llo 7 sql-server-2008

我有以下问题,我使用SQL Server MS,下面是我的结果.它看起来很简单,但我无法弄明白.

我的查询:

SELECT  RIGHT(CONVERT(VARCHAR(26), Timein, 109), 14) from vwSignIn
Run Code Online (Sandbox Code Playgroud)

会给我这个9:12:16:597AM

我希望这是我的结果9:12:16 AM.

提前致谢.

Aar*_*and 18

这是一种只有一次转换的方法:

SELECT RIGHT(CONVERT(CHAR(20), GETDATE(), 22), 11);
Run Code Online (Sandbox Code Playgroud)

但是,您应该考虑在客户端进行格式化,其中字符串格式更强大且更合适.

在SQL Server 2012中,您将能够使用FORMAT(),这意味着您不必记住所有这些样式编号(但我仍然认为您最好在表示层中执行此操作):

SELECT FORMAT(GETDATE(), 'hh:mm:ss tt');
Run Code Online (Sandbox Code Playgroud)

请注意,FORMAT()相对于其他方法而言,这是昂贵的.


sge*_*des 13

这是你可以做到的一种方式:

CONVERT(VARCHAR(8), Timein, 108) + ' ' + RIGHT(CONVERT(VARCHAR(30), Timein, 9), 2) 
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示

  • 它工作得很好!非常感谢!我会投票但我还没有足够的代表. (4认同)
  • -1 - 尝试中午以后的日期,并将军事24小时时间与Meridian-AM/PM混合.@AaronBertrand有更好,更短,更高效的答案. (2认同)