Hola Alvaro:
Amigo, en verdad, no se complique la vida, lea esto:
Microsoft SQL Server almacena internamente los valores de tipo de datos datetime como enteros de 4 bytes. Los 4 primeros bytes almacenan el número de días antes o después de la fecha base, el 1 de enero de 1900. La fecha base es la fecha de referencia del sistema. Los valores para datetime anteriores al 1 de enero de 1753 no se permiten. Los otros 4 bytes almacenan la hora del día representada como el número de milisegundos después de media noche.
El tipo de datos smalldatetime almacena las fechas y horas del día con menor precisión que datetime. SQL Server almacena los valores smalldatetime como dos enteros de 2 bytes. Los dos primeros bytes almacenan el número de días después del 1 de enero de 1900. Los otros dos, almacenan el número de minutos desde media noche. El intervalo de datos es del 1 de enero de 1900 al 6 de junio de 2079, con precisión de minutos.
Por tanto, su solucion es: SABER utilizar los CAST o CONVERT, DATEPART, DATEADD, DATEDIFF.
Saludos.