0

Я хочу объединить две даты их времени, как показано ниже в SQL Server 2008. Что-то вроде этого:конкатенации двух дат и их раз в SQL Server 2008

2015-09-09 08:30 - 2015-09-09 09:30 

Я попробовал этот метод, но не работал и Я тоже использовал кастинг.

CONVERT(DATETIME, CONVERT(CHAR(8), S.StartTime, 112)+ '-' + CONVERT(CHAR(8), S.endtime, 108)) AS 'OccupiedTime' 

он показывает результат, как этот

2015-09-09 09:30:00:000 
+1

Почему вы не используете формат 120? – shawnt00

ответ

3
CONVERT(CHAR(16), s.StartTime, 120) + '-' + 
CONVERT(CHAR(16), s.EndTime, 120) AS OccupiedTime 
+0

Спасибо, брат, это сработало –

1

Вам нужно 2 части дня - только дата + время. Вы можете иметь 2 строк и сцепить их:

SELECT 
    REPLACE(CONVERT(VARCHAR(50),s.StartTime,103),'/','-') + ' ' + 
    CONVERT(VARCHAR(5),s.StartTime,114) + ' - ' + 
    REPLACE(CONVERT(VARCHAR(50),s.EndTime,103),'/','-') + ' ' + 
    CONVERT(VARCHAR(5),s.EndTime,114) AS OccupiedDateTime 

Вы можете быстро проверить, как она выглядит с помощью:

SELECT 
    REPLACE(CONVERT(VARCHAR(50),GETDATE(),103),'/','-') + ' ' + 
    CONVERT(VARCHAR(5),GETDATE(),114) + ' - ' + 
    REPLACE(CONVERT(VARCHAR(50),GETDATE(),103),'/','-') + ' ' + 
    CONVERT(VARCHAR(5),GETDATE(),114) AS OccupiedDateTime 
1

Вы можете использовать SQL функцию Convert и параметр стиля преобразования вместе следующим образом

declare @StartTime datetime = getdate() 
declare @EndTime datetime = getdate() 
select convert(varchar(16), @StartTime, 120) + ' - ' + convert(varchar(16), @EndTime, 120) 

Если вы проверить код, я использовал VARCHAR (16), который удаляет нежелательные milllisecond информация об автофокусировке тер. Подробнее о SQL Server Convert datetime function о действии, пожалуйста, обратитесь к данному учебнику

Смежные вопросы