我有以下问题,我使用的是SQL Server MS,下面是我的结果。它看起来很简单,但我无法弄明白。
我的查询:
SELECT RIGHT(CONVERT(VARCHAR(26), Timein, 109), 14) from vwSignIn
将以 9:12:16:597AM
给我这个我想要 9:12:16 AM 作为我的结果。
先谢谢。
答案 0 :(得分:18)
这是一种只有一次转换的方法:
SELECT RIGHT(CONVERT(CHAR(20), GETDATE(), 22), 11);
但是,您应该考虑在客户端进行格式化,其中字符串格式化功能更强大且更合适。
在SQL Server 2012中,您将能够使用FORMAT()
,这意味着您不必记住所有这些样式编号(但我仍然认为您最好在表示层中执行此操作如果可能的话):
SELECT FORMAT(GETDATE(), 'hh:mm:ss tt');
答案 1 :(得分:13)
这是你可以做到的一种方式:
CONVERT(VARCHAR(8), Timein, 108) + ' ' + RIGHT(CONVERT(VARCHAR(30), Timein, 9), 2)
答案 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), '')