Có, SQL Server thời gian làm tròn thành 3.(3) mili giây:
SELECT CAST(CAST('2009-01-01 00:00:00.000' AS DATETIME) AS BINARY(8))
SELECT CAST(CAST('2009-01-01 00:00:01.000' AS DATETIME) AS BINARY(8))
0x00009B8400000000
0x00009B840000012C
Như bạn thấy, DATETIME này khác nhau bởi 1 thứ hai, và các đại diện nhị phân của chúng khác nhau 0x12C , đó là 300 ở dạng thập phân.
Điều này là do SQL Server lưu trữ time một phần của DATETIME dưới dạng một số 1/300 tích tắc thứ hai từ nửa đêm.
Nếu bạn muốn chính xác hơn, bạn cần lưu trữ TIME một phần như một giá trị riêng biệt. Giống như, thời gian lưu trữ được làm tròn đến một giây dưới dạng DATETIME và mili giây hoặc bất kỳ độ chính xác nào bạn cần làm INTEGER trong các cột khác.
Điều này sẽ cho phép bạn sử dụng DATETIME phức tạp số học, như thêm tháng hoặc tìm ngày trong tuần vào DATETIME và bạn chỉ có thể thêm hoặc bớt phần nghìn giây và nối kết quả dưới dạng .XXXXXX+HH:MM để lấy XML hợp lệ đại diện.