Вам следует проверить свои преобразования в SQL Management Studio, чтобы увидеть, что они возвращают.
declare @StartDate datetime = getdate()
declare @EndDate datetime = getdate()
declare @StartTime varchar(8) = '10:00:00'
declare @EndTime varchar(8) = '11:00:00'
select
convert(varchar(10), @StartDate,101) +
stuff(right(convert(varchar(26),@StartTime,109 ),15),7,7, ' ' ) as StartDate,
convert(varchar(10),@EndDate, 101) +
stuff(right(convert(varchar(26),@EndTime,109 ),15),7,7, ' ' ) as EndDate
Результат
StartDate EndDate
------------------- -------------------
03/23/201110:00: 03/23/201111:00:
Вы также можете разбить преобразование на части, чтобы увидеть, что происходит
select
convert(varchar(10), @StartDate,101) as DatePart,
convert(varchar(26),@StartTime,109) as Time26,
right(convert(varchar(26),@StartTime,109 ),15) as Time15,
stuff(right(convert(varchar(26),@StartTime,109 ),15),7,7, ' ' ) as TimeStuff
Результат
DatePart Time26 Time15 TimeStuff
---------- -------------------------- --------------- ---------
03/23/2011 10:00:00 10:00:00 10:00:
Это то, что я бы сделал. Результатом является дата и время.
select
convert(datetime, convert(varchar(10), @StartDate, 101)+' '+@StartTime) as StartDate,
convert(datetime, convert(varchar(10), @EndDate, 101)+' '+@EndTime) as EndDate
Результат
StartDate EndDate
----------------------- -----------------------
2011-03-23 10:00:00.000 2011-03-23 11:00:00.000