The best (and fastest) way to do this is to convert the date to an integer, since the temporary part is stored in decimal.
Try the following:
select convert(datetime,convert(int, @yourdate))
So, you convert it to an integer, and then back to the data and voila, part of the time is gone.
Of course, subtracting this result from the original value will give you only a fraction of the time.
source share