Después de consultar expertos en esta materia, programadores de varias áreas y maestros dimos con la solución al dilema y la compartimos en esta publicación.
Solución:
Encontré que el problema era cuando una fecha se establecía en 9999-12-31, probablemente demasiado grande para que la manejara el decimal. Cambió de decimal a flotante, y todo funciona a la perfección.
En general, convertir una fecha a un número o string, para realizar operaciones de fecha en él, es altamente ineficiente. (Las conversiones son relativamente intensivas, al igual que string manipulaciones.) Es mucho mejor ceñirse solo a las funciones de fecha.
El ejemplo que das es (creo) para eliminar la parte de tiempo de DateTime, lo siguiente lo hace sin la sobrecarga de conversiones …
DATEADD(DAY, DATEDIFF(DAY, 0, ), 0)
Esto también debería evitar desbordamientos aritméticos…
Al final de la artículo puedes encontrar las notas de otros administradores, tú igualmente eres capaz mostrar el tuyo si dominas el tema.