EDIT :la conversion en float/int ne fonctionne plus dans les versions récentes de SQL Server. Utilisez plutôt ce qui suit :
select datediff(day, '1899-12-30T00:00:00', my_date_field)
from mytable
Notez que la date de la chaîne doit être dans un format de date non ambigu afin qu'elle ne soit pas affectée par les paramètres régionaux de votre serveur.
Dans les anciennes versions de SQL Server, vous pouvez convertir un DateTime en Integer en convertissant en float, puis en int :
select cast(cast(my_date_field as float) as int)
from mytable
(NB :Vous ne pouvez pas transtyper directement en int, car MSSQL arrondit la valeur si vous avez dépassé midi !)
S'il y a un décalage dans vos données, vous pouvez évidemment l'ajouter ou le soustraire du résultat
Vous pouvez convertir dans l'autre sens, en lançant directement vers l'arrière :
select cast(my_integer_date as datetime)
from mytable