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

时间:2013-04-02 16:37:24

标签: sql-server-2008

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

我的查询:

SELECT  RIGHT(CONVERT(VARCHAR(26), Timein, 109), 14) from vwSignIn

将以 9:12:16:597AM

给我这个

我想要 9:12:16 AM 作为我的结果。

先谢谢。

5 个答案:

答案 0 :(得分:18)

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

SELECT RIGHT(CONVERT(CHAR(20), GETDATE(), 22), 11);

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

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

SELECT FORMAT(GETDATE(), 'hh:mm:ss tt');

请注意,FORMAT() is expensive relative to other approaches

答案 1 :(得分:13)

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

CONVERT(VARCHAR(8), Timein, 108) + ' ' + RIGHT(CONVERT(VARCHAR(30), Timein, 9), 2) 

SQL Fiddle Demo

答案 2 :(得分:1)

我发现这种方式更优雅:

SELECT LTRIM(Right(REPLACE(CONVERT(nvarchar(MAX),CAST(GetDate() as smalldatetime), 109),':00:000', ' '), 8));

答案 3 :(得分:1)

if (dt.Rows.Count > 0)
{
    textBox2.Text = dt.Rows[0][0].ToString();
    Dept_name.Text = dt.Rows[0][1].ToString();
    textBox1.Text = dt.Rows[0][2].ToString();
    No_of_Employees.Text = dt.Rows[0][3].ToString();
    Dept_discription.Text = dt.Rows[0][4].ToString();
}

答案 4 :(得分:0)

我猜的最简单的方法是:

select ISNULL(CONVERT(VARCHAR(10), Timein, 100), '')