我有小桌子
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))