2017-01-06 12 views
0

У меня есть две колонки startDate (160812 - год, месяц, день) и startTime (112345 - час, mimutes, seconts) с varchar типом данных моя цель объединить их и превратить их в DateTime. И я добавил к ним другую колонку (duration - int)Преобразовать VARCHAR в дату и добавить секунды

Я пытался что-то вроде этого:

WITH [A] AS 
(
    SELECT (startDate + startTime) AS time1 
    FROM [Date] 
) 
SELECT 
    CONVERT(datetime, A.time1, 20) 
FROM 
    [A] 

однако я получаю сообщение об ошибке:

Msg 241, Level 16, State 1, Строка 1
Конверсия не удалась при преобразовании даты и/или времени из символьной строки.

Любые идеи лучше попробовать?

+1

[Вредные привычки пнуть: выбор неверный тип данных] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12 /bad-habits-to-kick-using-the-wrong-data-type.aspx) – Jamiec

ответ

1

Я думаю, что вы хотите что-то вроде этого:

select (convert(datetime, startDate, 12) + 
     convert(time, stuff(stuff(startTime, 5, 0, ':'), 3, 0, ':'))) 
     ) as dt