正如其他人所指出的,这种格式的真的不是数据库的问题,但有些事您的应用程序来处理。这就是说,并感谢Gordon Linoff的转换:
declare @TimeRanges as Table
([col-A] Int Identity, [col-B] Int, [col-C] Date, [col-D] DateTime, [col-E] DateTime);
insert into @TimeRanges ([col-B], [col-C], [col-D], [col-E]) values
(12, '20121201', '19001201 02:00:00', '19001201 03:30:00'),
(12, '20121202', '19001201 03:00:00', '19001201 04:00:00'),
(13, '20121219', '19001201 09:00:00', '19001201 17:00:00');
select * from @TimeRanges;
select [col-A],
case when RN = 1 then Cast([col-B] as VarChar(10)) else '' end as [col-B], Range
from (
select [col-B], Row_Number() over (partition by [col-B] order by [col-A]) as RN,
(Convert(VarChar(19), [col-C] + [col-D], 121) + ' - ' +
Right(Convert(VarChar(19), [col-E], 121), 8)) as Range
from @TimeRanges) as ArbitraryPlaceholder
order by [col-A];
col-C D和E的数据类型是什么?日期,日期时间或Varchar? – sgeddes
如果此查询由诸如.net,coldfusion,java等应用程序代码调用,运行一个非常简单的查询来获取数据并使用应用程序代码对其进行格式化可能会更容易。 –
SQL用于处理数据,而不是显示它。在客户端代码中做这种事。 –