EDITAR:La conversión a float/int ya no funciona en versiones recientes de SQL Server. Utilice lo siguiente en su lugar:
select datediff(day, '1899-12-30T00:00:00', my_date_field)
from mytable
Tenga en cuenta que la fecha de la cadena debe tener un formato de fecha inequívoco para que no se vea afectada por la configuración regional de su servidor.
En versiones anteriores de SQL Server, puede convertir de DateTime a Integer convirtiéndolo en flotante y luego en int:
select cast(cast(my_date_field as float) as int)
from mytable
(Nota:¡No puede convertir directamente a un int, ya que MSSQL redondea el valor si ya pasó el mediodía!)
Si hay una compensación en sus datos, obviamente puede sumar o restar esto del resultado
Puedes convertir en la otra dirección, lanzando directamente hacia atrás:
select cast(my_integer_date as datetime)
from mytable