Даты хранятся в виде чисел в SQL, х дней после некоторой даты начала (я думаю, в 1753 году).Почему-то похоже, что вы сохраняете возвращаемое значение даты в поле с плавающей точкой.Попробуйте добавить свои 40927 к 01.01.1753 (40 927 дней после 1 января 1753 г.) и посмотрите, получите ли вы правильное значение
Попробуйте эту команду SQL
select cast( cast('1/1/1900' as dateTime) as float)
, она вернет 0с указанием 1 января 1900 года - первая дата.Я подозреваю, что тип поля - smalldatetime, в котором даты и время дня хранятся с меньшей точностью, чем тип данных datetime.Допустимый диапазон дат для этого типа данных - с 1 января 1900 года по 6 июня 2079 года.
Число представляет число дней после 1 января 1900 года. Дробная часть - это часть времени.Попробуйте это:
select cast(40927.7895138889 as dateTime)