EDIT:il cast su float/int non funziona più nelle versioni recenti di SQL Server. Utilizzare invece quanto segue:
select datediff(day, '1899-12-30T00:00:00', my_date_field)
from mytable
Tieni presente che la stringa data deve essere in un formato di data non ambiguo in modo che non sia influenzata dalle impostazioni internazionali del tuo server.
Nelle versioni precedenti di SQL Server, puoi convertire da DateTime a Integer eseguendo il cast in un float, quindi in un int:
select cast(cast(my_date_field as float) as int)
from mytable
(NB:non puoi eseguire il cast direttamente su un int, poiché MSSQL arrotonda il valore per eccesso se hai superato la metà della giornata!)
Se c'è un offset nei tuoi dati, puoi ovviamente aggiungerlo o sottrarlo dal risultato
Puoi convertire nell'altra direzione, trasmettendo direttamente indietro:
select cast(my_integer_date as datetime)
from mytable