Na verdade, a expressão VB.NET está retornando os valores corretos desde o número total de
hours
não é igual a 48
.Por isso está retornando 1 No SQL Server, a função DateDiff retorna um valor de arredondamento.
Tente dividir o valor pelo número total de segundos no dia, que é
86400.0
SELECT @Date1, @Date2, DATEDIFF(ss,@Date1,@Date2) /86400.0
O valor retornado será
1.9999421
em vez de 2
A diferença entre a data 2 em segundos é
172795
que é menor que 172800
(Total de segundos para 2 dias). Portanto, a função deve retornar apenas 1 se você não arredondar o resultado