将SQL日期时间转换为特定格式

时间:2014-04-22 08:48:58

标签: sql sql-server sql-server-2008

我有一张桌子,其中一个datetime colomn如下:

tbTest

ID          int  
SetDate  datetime

和一个条目如:

ID      SetDate
1    04/10/2014 2:38:16 PM

我想将SetDate转换为dd-mm-yyyy hh:mm:ss PMdd-mm-yyyy hh:mm PM

期望的输出:

ID      SetDate
1    10-04-2014 2:38:16 PM

1    10-04-2014 2:38 PM

5 个答案:

答案 0 :(得分:4)

您可以使用sql convert方法获取所需的输出:-23-04-2014 10:16 AM

SELECT CONVERT(VARCHAR(10), getdate(), 105) + ' ' + REPLACE(REPLACE(RIGHT('0'+LTRIM(RIGHT(CONVERT(varchar,getDate(),100),7)),7),'AM',' AM'),'PM',' PM')

答案 1 :(得分:2)

您可以使用convert

select convert(varchar(10), getdate(), 105) + ' ' + 
       SUBSTRING(CONVERT(varchar, getdate(), 100), 14, 4)+ ' ' +
       RIGHT(convert(varchar, getdate(), 100), 2)

答案 2 :(得分:0)

    SELECT replace(convert(NVARCHAR(100), getdate(), 106), ' ', '-')
+' ' + CONVERT(VARCHAR(30), CAST(GETDATE()AS Time), 100)

答案 3 :(得分:0)

使用CONVERT以及相应的样式:

SELECT CONVERT(CHAR(10), @SetDate, 110) 
    + ' ' + SUBSTRING(CONVERT(CHAR(19), @SetDate, 100), 14, 4)
    + ' ' + SUBSTRING(CONVERT(CHAR(19), @SetDate, 100), 18, 2)

第一个是日期部分,第二个是12小时时间部分,最后一个是上午/下午指示符。

Demo

答案 4 :(得分:0)

您可以使用的最短且最好看的查询是:

SELECT CONVERT(VARCHAR(10), SetDate, 105) + ' ' + 
       CONVERT(VARCHAR(8), CAST(SetDate AS TIME), 100)

输出:

31-07-2001 12:00AM

不需要字符串操作。

另一个例子:

DECLARE @Date AS DATETIME
SET @Date = '2014-31-12 18:00:00'

SELECT CONVERT(VARCHAR(10), @Date, 105) + ' ' + 
       CONVERT(VARCHAR(8), CAST(@Date AS TIME), 100) AS FormatDate

输出:

31-12-2014 6:00PM