SQL PM AM结果

时间:2011-12-20 16:16:39

标签: sql tsql

我有小桌子

Create Table TestDates
(
  TestDateId int identity (1,1),
  RunDateTime DateTime
)

见下面的数据

Insert into TestDates
(RunDateTime)
Values
(getdate())

Insert into TestDates
(RunDateTime)
Values
( DATEADD(DAY,  -1, GETDATE()))

Insert into TestDates
(RunDateTime)
Values
( DATEADD(DAY,  -2, GETDATE()))

Insert into TestDates
(RunDateTime)
Values
( DATEADD(DAY,  -3, GETDATE()))

Insert into TestDates
(RunDateTime)
Values
( DATEADD(Hour,  -34, GETDATE()))

Insert into TestDates
(RunDateTime)
Values
( DATEADD(Hour,  -12, GETDATE()))

我设法执行只带来时间的独特查询

SELECT DISTINCT 
DATENAME(hour, RunDateTime) + ':' + 
DATENAME(mi, RunDateTime) AS  DistinctDate
from TestDates

但我需要用PM / AM表示时间。

参见所需的输出

Current Output     Desired Output

10:33                **10:33 AM**
20:31                **08:31 PM** 
8:33                 **08:33 AM**

请咨询

5 个答案:

答案 0 :(得分:2)

如果您确定要在服务器端进行格式化,请考虑使用格式化功能。请参阅Is there a way to get dates with custom formats in SQL Server?

或者,您可以尝试

right(convert(varchar, RunDateTime, 100), 7)

编辑:

select distinct right(convert(varchar, RunDateTime, 100), 7)
from TestDates

答案 1 :(得分:2)

select distinct substring(convert(varchar(20),RunDateTime, 9), 13, 5) +' '
+ substring(convert(varchar(30),RunDateTime, 9), 25, 2) from
TestDates;

测试。给你以下结果

凌晨1点21分

上午11:21

晚上11:21

答案 2 :(得分:1)

SELECT DISTINCT SUBSTRING(CONVERT(varchar, RunDateTime, 100), 13, 2) + ':'
+ SUBSTRING(CONVERT(varchar, RunDateTime, 100), 16, 2) + ' '
+ SUBSTRING(CONVERT(varchar, RunDateTime, 100), 18, 2) AS DistinctDate
from TestDates

答案 3 :(得分:1)

如果您使用的是SQL 2008,则可以执行此操作:

select convert(nvarchar, cast(RunDateTime as time), 100) from TestDates

以下是该输出:

9:31AM
9:31AM
9:31AM
9:31AM
11:31PM
9:31PM

答案 4 :(得分:0)

此查询可以获取AM / PM部分:

REVERSE(SUBSTRING(REVERSE(CONVERT(CHAR(26), getdate(),109)),1,2))