格式化SQL DATETIME结果,如 - > 8/25/2011 4:35 PM< - NOT - > 2011-08-25 16:35:51.000< -

时间:2011-08-25 23:41:23

标签: sql datetime format

我在SQL Server 2008 R2上运行了一个返回DATETIME列的SQL查询。当前格式返回:

2011-08-25 16:35:51.000

我希望看到的是:

8/25/2011 4:35 PM

如何修改SELECT语句的想法?这里有一个简单的声明......

SELECT DtCheckIn from Ticket

谢谢你,安德鲁

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

SELECT convert(varchar, getdate(), 101) + RIGHT(convert(varchar, getdate(), 100), 7)

有关日期时间格式的资源:

http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

http://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

编辑 - 这是一个小小的问题,但它应该给你你想要的东西。

基本上,第一部分SELECT convert(varchar, getdate(), 101)会为您提供2011年8月25日的日期。

第二部分SELECT convert(varchar, getdate(), 100)Aug 25 2011 5:35PM格式为您提供日期和时间。您只希望格式为hh:mmAMhh:mmPM的时间部分所需的字符总数为7.因此,如果您将其更改为SELECT RIGHT(convert(varchar, getdate(), 100), 8),您将获得时间{{ 1}}。我在5:37PM中使用了8来获得额外的空间。但现在你只想要你的时间不是AM / PM所以添加SELECT LEFT(RIGHT(转换(varchar,getdate(),100),8),6)你会得到你的hh:mm。

最后你想要你的AM / PM RIGHT()这将获得最后2个字符。

把它们放在一起然后得到:

SELECT RIGHT(convert(varchar, getdate(), 100), 2)

这给出了您的最终产品:

SELECT convert(varchar, getdate(), 101) 
    + LEFT(RIGHT(convert(varchar, getdate(), 100), 8), 6)
    + ' ' + RIGHT(convert(varchar, getdate(), 100), 2)