Eu tenho um campo de data [ load_date
] e um campo datetime2 [ load_time
] que quero combinar em um datetime2. Eu quero combinar load_date
com a parte de tempo load_time
e criar um datetime2.
Está em uma tabela existente, e eu quero SET
esse load_time
novo valor. Abaixo está um SELECT
que parece funcionar, para que eu possa transformar isso em uma UPDATE
declaração. No entanto, eu queria saber se existe uma forma mais elegante ou menos verbosa.
SELECT
[load_date]
, [load_time]
, DATEADD(DAY, DATEDIFF(DAY, CAST(CAST([load_time] AS TIME) AS DATETIME2), CAST([load_date] AS DATETIME2)), CAST(CAST([load_time] AS TIME) AS DATETIME2))
Você pode usar
CONCAT
e confiar na conversão implícita para fazê-lo com menos detalhes. Ambas as consultas usam 0 CPU, portanto, talvez seja necessário executar muitas iterações para ver se uma é significativamente mais eficiente que a outra.Você não precisa convertê-lo explicitamente para DATETIME2 porque ele será convertido implicitamente quando atualizar a coluna load_time. Observe que ter o código mais curto nem sempre é o melhor. Usar comentários para explicar o que o código está fazendo evitará que alguém tenha que descobrir o que está fazendo.