6

Cơ sở hạ tầng cơ bản của các giá trị datetime được lưu trữ trong SQL Server (2000 và 2005 nếu khác nhau) là gì? Tức là xuống biểu diễn byte?Biểu diễn bên trong của datetime trong máy chủ sql là gì?

Có lẽ đại diện mặc định bạn nhận được khi bạn chọn cột ngày giờ là giá trị văn hóa cụ thể/đối tượng thay đổi. Đó là, một số cấu trúc cơ bản mà chúng ta không thấy là được định dạng thành YYYY-MM-DD HH: MM: SS.mmm.

Lý do tôi hỏi là có chế độ xem thường được giữ trong bộ phận của tôi rằng bộ nhớ được lưu trữ trong bộ nhớ theo nghĩa đen là YYYY-MM-DD HH: MM: SS.mmm nhưng tôi chắc chắn điều này không đúng.

Trả lời

11

Đó là stored as an 8 byte field, có khả năng từ 1753-01-01 đến 9999-12-31, chính xác đến 0.00333 giây.

Các chi tiết được cho là mờ đục, nhưng hầu hết các nguồn lực (1), (2) mà tôi đã tìm thấy về tình trạng web sau:

4 byte đầu tiên lưu trữ các số ngày kể từ kỷ nguyên SQL Server (ngày 01 tháng 1 1900) và rằng 4 byte thứ hai lưu trữ số lượng bọ ve sau nửa đêm, trong đó "đánh dấu" là 3,3 mili giây.

Bốn byte đầu tiên được ký (có thể là dương hoặc âm), giải thích lý do tại sao ngày sớm hơn thời đại có thể được biểu diễn.

+7

Điều đó không chính xác. Từ bài viết được liên kết: Trên thực tế, SQL Server lưu trữ ở đó các đồng hồ-ve kể từ nửa đêm. Mỗi đồng hồ đánh dấu tương đương với 3,33 mili giây. Đó cũng là lý do tại sao kiểu dữ liệu DATETIME có độ chính xác là một phần ba của một giây. Điều này, một lần nữa, được nêu chính xác trong BOL. – ctusch

+1

@ctusch, tôi đã cập nhật câu trả lời (sau gần 7 năm!) Để sửa kích thước của "bọ ve". –

+0

Điều thú vị là tài liệu SQL Server sử dụng thuật ngữ "chính xác". Nó * nên * nói "chính xác". –

Các vấn đề liên quan