DateTimeは、多くの場合、整数部分では事前に決定された日付(一般にエポックと呼ばれます)からの日数として表され、小数部分では深夜から経過した日のパーセンテージとして表されます。
SQL Serverも例外ではないため、Floatへの変換は非常に理にかなっています。 0日目は1900年1月1日00:00:00です(AFAIK、特定のタイムゾーンではないため、「現地時間」と見なす必要があります)。
だから、あなたはこれを試すことができます:
declare @ADate DateTime;
set @ADate = '19000101 00:00:00';
select CONVERT(float, @ADate); --should print 0
set @ADate = '19000101 12:00:00';
select CONVERT(float, @ADate); --should print 0.5
set @ADate = '19001231 06:00:00';
select CONVERT(float, @ADate); --should print 364.25
したがって、結果として、1900年1月1日00:00:00および2010年1月7日00:00:00から40183日が経過しました
明確化:Unixライクなシステムは、日時を保存するために異なるアプローチを使用します。Unixエポック(1970年1月1日00:00:00 UTC)からの秒数。これはエポックタイムとして知られています。
[編集]この応答の日付形式は、20140416にYYYYMMDD形式に変更されました。これは、SQL Serverでの数年の新しい経験の後(@Damienがコメントで述べたように)、これが唯一の安全な形式です。