DateTime sering direpresentasikan sebagai hitungan hari dari tanggal yang telah ditentukan sebelumnya (umumnya dikenal sebagai epoch) pada bagian bilangan bulat dan persentase hari yang berlalu sejak tengah malam pada bagian pecahan.
SQL Server bukan pengecualian untuk ini, jadi konversi ke Float sangat masuk akal. Hari 0 adalah 01 Jan 1900 00:00:00 (AFAIK, tanpa zona waktu tertentu, jadi Anda harus menganggapnya sebagai "waktu lokal").
Jadi, Anda dapat mencoba ini:
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
Jadi, untuk hasil Anda, 40183 hari telah berlalu sejak 01/01/1900 00:00:00 dan 07/01/2010 00:00:00
Klarifikasi:Sistem mirip Unix menggunakan pendekatan berbeda untuk menyimpan datetimes:Detik sejak Unix epoch (1 Jan 1970 00:00:00 UTC), yang lebih dikenal sebagai epoch time.
[Sunting]Format tanggal pada tanggapan ini diubah menjadi format YYYYMMDD pada 20140416, setelah beberapa tahun pengalaman baru dengan SQL Server (dan seperti yang dikatakan @Damien dalam komentarnya) ini adalah satu-satunya format yang aman.