2014-01-08 9 views
1

У меня есть база данных Я работаю с тем, где дебилы, разработавшие программное обеспечение для интерфейсов, считали необходимым создать отдельное поле Дата и время, однако оставляя столбцы Date столбцом DATETIME и временем как столбец VARCHAR.Объединить отдельные столбцы даты и времени SQL

По существу моя дата и время выглядит следующим образом:

Дата | Период

2007-10-06 00: 00: 00.000 | 1135

Вместо того, чтобы просто комбинировать столбцы 2 под 1 в качестве правильного дата и времени.

Я пытаюсь объединить 2 вместе, так что я могу точно это получения идеальной, надлежащее поле DATETIME, который сочетает в себе оба набора информации в т.е.

2007-10-06 11: 35: 00.000

Этот бит, с которым я борюсь.

Я думал, что я мог бы уйти с

DECLARE @date DATETIME 
DECLARE @time VARCHAR 

SET @date = '2007-10-06 00:00:00.000' 
SET @time = '1125' 

SELECT TOP 1 
    @date + (SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 2 , 2) 
       + ':00') 

К сожалению, нет, теперь я думаю, что я overthinking проблемы и просто врезаться в стену после того, как стены.

Может кто-нибудь помочь в этом вопросе и указать мне, где я неправильно:/

+0

Заменить окончательный запрос с этим: 'ВЫБРАТЬ @date + (SUBSTRING (@time, 1, 2) + ':' + SUBSTRING (@time , 3, 2) + ': 00') '. –

+0

@KarthikDV - Msg 241, уровень 16, состояние 1, строка 7 Не удалось преобразовать при преобразовании даты и/или времени из символьной строки. :/ – Lynchie

+1

@ Lynchie, я проверил этот образец !. увидеть полный код здесь: 'DECLARE @date DATETIME DECLARE @time VARCHAR (4) SET @date = '2007-10-06 00: 00: 00.000' SET @time = '1125' ВЫБРАТЬ @date + (SUBSTRING (@time, 1, 2) + ':' + SUBSTRING (@time, 3, 2) + ': 00') '. –

ответ

3

Определение размера для переменной VARCHAR @time. Значение по умолчанию: 1.

Вам также необходимо изменить вторую подстроку на 3,2.

DECLARE @date DATETIME 
DECLARE @time VARCHAR(4) 

SET @date = '2007-10-06 00:00:00.000' 
SET @time = '1125' 

SELECT TOP 1 
    @date + (SUBSTRING(@time , 1 , 2) + ':' + SUBSTRING(@time , 3 , 2) 
       + ':00') 
+0

Микаэль, который вздыхает, большое спасибо. – Lynchie

2

Вот как я бы написать его

DECLARE @date DATETIME = '2007-10-06T00:00:00' 
DECLARE @time VARCHAR(4) = '1125' 

SELECT @date + stuff(@time, 3,0, ':') 
Смежные вопросы