我有小桌子
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**
请咨询
答案 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))