0
我需要根據不同的條件獲取時間部分。Sql服務器 - 從日期時間獲取不同的時間部分
我寫了到目前爲止的代碼如下:
CREATE TABLE TimeTable
(
EarliestStart datetime null,
LatestEnd datetime null
);
INSERT INTO TimeTable select '2017-08-28 10:00:00.000', '2017-08-28 12:00:00.000' union all --expected: 10-12
select '2017-08-29 10:15:00.000', '2017-08-28 12:00:00.000' union all --expected: 10.15-12
select '2017-08-28 10:00:00.000', '2017-08-28 12:15:00.000' union all --expected 10-12.15
select '2017-08-28 00:00:00.000', '2017-08-28 23:59:00.000' --expected empty
insert into TimeTable (EarliestStart) values('2017-08-28 16:59:00.000') --expected 16:59-
insert into TimeTable (LatestEnd) values('2017-08-28 16:59:00.000') --expected -16:59
select
case
when earlieststart is null and latestend is null then ''
when CONVERT(NCHAR(5),earlieststart,108) = '00:00' and CONVERT(NCHAR(5),latestend,108) = '23:59' then ''
else
case when earlieststart is null then ''
when RIGHT(CONVERT(NCHAR(5),earlieststart,108),2) = '00' then CONVERT(NCHAR(2),earlieststart,108) else CONVERT(NCHAR(5),earlieststart,108) end
+ '-' +
case when latestend is null then ''
when RIGHT(CONVERT(NCHAR(5),latestend,108),2) = '00' then CONVERT(NCHAR(2),latestend,108) else CONVERT(NCHAR(5),latestend,108) end
end
from TimeTable
有沒有辦法做到這一點更好,具有更好的性能?我使用SQL Server 2008