Ngày giờ thường được biểu diễn dưới dạng số ngày từ ngày được xác định trước (thường được gọi là kỷ nguyên) trên phần nguyên và tỷ lệ phần trăm của ngày trôi qua kể từ nửa đêm trên phần phân số.
Máy chủ SQL không phải là ngoại lệ cho điều này, do đó việc chuyển đổi sang Float tạo ra nhiều ý nghĩa. Ngày 0 là ngày 01 tháng 01 năm 1900 00:00:00 (AFAIK, không có múi giờ cụ thể, vì vậy bạn sẽ xem xét nó là "giờ địa phương").
Vì vậy, bạn có thể thử này:
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 = '190:00:00';
select CONVERT(float, @ADate); --should print 364.25
Vì vậy, đối với kết quả của bạn, 40.183 ngày đã trôi qua kể từ 01/01/1900 0:00:00 và 01/07/2010 00:00: 00
Làm rõ: Các hệ thống giống Unix sử dụng một cách tiếp cận khác để lưu trữ thời gian biểu: Giây từ thời đại Unix (Jan 1 1970 00:00:00 UTC), được gọi là thời gian epoch.
[Chỉnh sửa] Định dạng ngày trên phản hồi này đã được đổi thành định dạng YYYYMMDD trên 20140416, sau một số năm kinh nghiệm mới với SQL Server (và như @Damien đã nói trong nhận xét của anh ấy) đây là định dạng an toàn duy nhất.
bạn còn mong đợi điều gì nữa ??? –
chính xác bạn cần làm gì? – hgulyan
tôi đã mong đợi lỗi, tôi muốn biết làm thế nào nó chuyển đổi datetime để nổi, nội bộ như thế nào nó hoạt động. –