2011-11-17 40 views
5

Có cách nào tiêu chuẩn để lưu trữ năm và tháng trong cơ sở dữ liệu không? Tôi cần phải thực hiện một số báo cáo dựa trên tháng và năm.Làm thế nào để lưu trữ năm tháng trong cơ sở dữ liệu?

Tôi không thể sử dụng ngày và chức năng để trích xuất tháng trong thời gian thực vì các bảng rất lớn, vì vậy tôi cần tiền xử lý.

+0

Bạn nên chấp nhận một trong các câu trả lời nếu họ đã giúp bạn – aydow

Trả lời

3

Có lẽ hợp lý nhất là sử dụng date_trunc() cho tháng. Bạn cũng có thể thêm ràng buộc kiểm tra cho date_trunc() bằng với giá trị nếu bạn muốn.

7

Tôi sẽ làm theo những gì @Michael đề xuất.

Trích xuất tháng và năm từ một ngày cực nhanh với EXTRACT hoặc to_char(), có thể không cần phải xử lý trước.

date only occupies 4 byte trên đĩa, không tốt hơn thế này.

Cách thay thế là hai cột integer có các ràng buộc cột để bảo vệ chống lại các ngày bất hợp pháp. Chiếm 2x 4 byte.

Hoặc thậm chí smallint để tiết kiệm bộ nhớ RAM và bộ nhớ đĩa. Đọc và hiểu căn chỉnh dữ liệu trong bộ nhớ trên đĩa. Trong nhiều trường hợp, bạn không lưu được gì với các cột smallint. Tôi đã viết thêm về điều đó ở đây: Calculating and saving space in PostgreSQL

Tốt nhất để đi với cột ngày.

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