2015-04-06 15 views
5

Các tác động của việc sử dụng DateTime2 của SQL Server với độ chính xác là 0 để biểu diễn một ngày thay vì trường Ngày tháng được xây dựng.SQL Server DateTime2 (0) vs Ngày

Trong cả hai trường hợp, mối quan tâm của tôi là ngăn chặn các mục nhập thời gian ngẫu nhiên, nhưng có lưu ý về hiệu suất hay lưu trữ nào tôi nên lưu ý không?

+2

'DateTime2 (0)' vẫn cho phép bạn lưu trữ thời gian. 'Ngày' sẽ không. – JodyT

+0

Bạn có nghĩa là DateTime2 v/s DateTime không? DateTime2 bổ sung thêm [độ chính xác] (https://technet.microsoft.com/en-us/library/bb677335%28v=sql.105%29.aspx) vào phần thời gian của giá trị .. – abhi

+0

@abhi, nope. Tôi thấy một sự khác biệt trong một dự án tôi đã duy trì và tự hỏi tại sao sự khác biệt. –

Trả lời

6

Nó sẽ không hoạt động. Theo MSDN, kích thước tối thiểu của datetime2 là sáu byte và sẽ chứa hh: mm: ss để nó có thể, và sẽ, chứa một thành phần thời gian (mặc định là nửa đêm). Như những người trả lời khác đã lưu ý, bạn phải sử dụng một loại ngày để đảm bảo rằng không tiết kiệm được phần thời gian và sẽ chiếm ba byte.

https://technet.microsoft.com/en-us/library/bb677335%28v=sql.105%29.aspx

13

DateTime2(0) sẽ lưu trữ datetime không có giá trị thập phân tức là YYYY-MM-DD hh:mm:ss

SELECT CONVERT(DateTime2(0) , GETDATE()) 
RESULT: 2015-04-06 20:47:17 

Lưu trữ dữ liệu giống như ngày sẽ chỉ ngày cửa hàng tức là YYYY-MM-DD mà không cần bất kỳ giá trị thời gian.

SELECT CONVERT(Date , GETDATE()) 
RESULT: 2015-04-06 

Nếu bạn chỉ quan tâm đến ngày sau đó hãy sử dụng DATE loại dữ liệu.

DATETIME2 sẽ sử dụng 6 bytes cho các biện pháp less than 3DATE sẽ sử dụng 3 bytes.

Ngày bằng một nửa kích thước của DATETIME (0) do đó nó cũng sẽ hoạt động tốt hơn vì máy chủ sql sẽ xử lý ít dữ liệu hơn và cũng sẽ tiết kiệm dung lượng đĩa.

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