转换日期格式sql

时间:2011-09-26 20:32:00

标签: sql sql-server-2008 datetime

我从一个数据库获取信息,其日期时间字符串的格式如下

2011-08-25 13:53:22.607

并希望将其格式化为

8/25/2011 01:53:22 PM

请为我建议一种方法。

3 个答案:

答案 0 :(得分:0)

在Sql Server中尝试:

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)

答案 1 :(得分:0)

这里有一篇关于SQL Server中日期格式的好文章:http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/

它是用SQL Server 2005编写的,但信息仍然相关。

答案 2 :(得分:0)

没有原生的m / d / yyyy风格。您可以通过以下方式获得收盘(月和日领先0,小时领先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));

你可以做更多的工作来操作字符串以使完全你想要的格式,但是现在我建议在应用程序/表示层而不是arm中进行格式化 - 正在尝试使用SQL Server。

在Denali中,你可以使用FORMAT()更多的控制和不那么丑陋的字符串操作(例如手工劳动),例如

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