Preciso pegar uma DATETIME
coluna ( Column A
) que contém apenas uma data e, em seguida, adicionar uma VARCHAR(5)
coluna ( Column B
) que contém uma representação de 24 horas de uma hora (ou seja, 1330
) e combiná-las para obter uma válida DATETIME
para ser usada em um DATEDIFF
comando.
Por exemplo, Column A
contém 2013-07-01 00:00:00.000
e Column B
contém 1330
. O resultado deve ser 2013-07-01 13:30:00.000
.
Editar: só para esclarecer as coisas, este é um banco de dados existente que armazena os dados dessa maneira, está fora do escopo do meu projeto mudar completamente como as coisas funcionam para armazenar os dados de maneira adequada. Se eu pudesse, faria, mas não posso, então estou preso com as várias colunas. Além disso, os dados na Coluna B sempre serão uma hora de 4 dígitos, pois a página de entrada tem verificações para garantir que a hora seja um formato de hora militar válido.
Isso também lidará com valores < 10 AM que não possuem todos os 4 dígitos. (Além disso, essa coluna provavelmente deve ser CHAR(4) em vez de VARCHAR(5) - ou melhor ainda, pare de separá-los e armazene um valor de data e hora adequado em primeiro lugar).
Estou assumindo que não existe um
:
já na ColunaB, embora você possa usar uma substituição para removê-los conforme necessário. E uma segunda coisa se sua ColumnB já contiver segundos.Se você estiver usando o SQL 2012, poderá usar esta função:
DATETIMEFROMPARTS (ano, mês, dia, hora, minuto, segundos, milissegundos)
Ele retorna um datetime.
Talvez você possa fazer isso em menos etapas, mas essa é a ideia.