tSQL PM AM Result



我有小桌子

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**

请指教

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

如果您确定要在服务器端进行格式化,请考虑使用格式化函数。请参阅是否有办法在 SQL Server 中使用自定义格式获取日期?。

或者,您可以尝试

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

编辑:

select distinct right(convert(varchar, RunDateTime, 100), 7)
from TestDates
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

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

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

这是它的输出:

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

此查询获取AM/PM部分:

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

相关内容

最新更新