2011-09-26 200 views
-1

我与此格式转换日期格式SQL

2011-08-25 13:53:22.607 

的时间字符串以从一个数据库中的信息,并希望格式化它看起来像

8/25/2011 01:53:22 PM 

请为我提出一个方法去做这个。

在SQL服务器尝试
+3

您正在使用什么RDBMS? –

+1

你正在使用什么数据库引擎? MySQL的? SQL Server? PostgreSQL的?甲骨文?他们对这些事情都有不同的语法。 –

+0

IM使用SQL Server 2008,对不起,应该提到, –

回答

0

DECLARE @YourDatetime datetime 
SELECT @YourDateTime='2011-08-25 13:53:22.607' 

SELECT 
    CONVERT(varchar(2),month(@YourDateTime))+'/'+CONVERT(varchar(2),day(@YourDateTime))+'/'+CONVERT(varchar(4),year(@YourDateTime)) --date remove leading zeros 
    +' '+RIGHT('0'+LTRIM(LEFT(RIGHT(convert(varchar(50),@YourDateTime,109),14),8)),8) --amp/pm time format keep leading zeros 
    +' '+RIGHT(convert(varchar(50),@YourDateTime,109),2) --am or pm 

输出:

---------------------- 
8/25/2011 01:53:22 PM 

(1 row(s) affected) 
0

没有原生M/d/yyyy的风格。你可以(在月和日前导零,对时辰,没有前导0)接近这一点:

DECLARE @d DATETIME = '2011-08-25 13:53:22.607'; 

SELECT CONVERT(CHAR(10), @d, 101) + ' ' 
    + LTRIM(RIGHT(CONVERT(VARCHAR(25), @d, 22), 12)); 

你可以做更多的工作来操作字符串,以获得准确后是格式,但现在我建议你在做应用/表示层,而不是角力的SQL Server,格式化成这样做。

在德纳里,你将能够使用FORMAT()有更多的控制和更少的丑陋字符串操作(又名体力劳动),例如

SELECT FORMAT(@d, 'M/d/yyyy hh:mm:ss tt');