Tôi không được bán theo ý tưởng này, nhưng tôi là thực sự không được bán theo ý tưởng lưu trữ ngày (không phải là thời điểm) làm dấu thời gian, vì vậy đây là đề xuất của tôi.
Chuyển đổi ngày của bạn thành số nguyên có thể đọc được bằng con người (ví dụ: 2014-11-3
trở thành 20141103
) và lưu trữ giá trị số nguyên này. Nó chứa chính xác dữ liệu bạn cần, rất đơn giản để tạo và phân tích cú pháp và chiếm không gian tối thiểu. Ngoài ra, nó được đặt hàng và có một ánh xạ một ngày đến các giá trị hợp lệ (được cấp, số không hợp lệ là có thể, chẳng hạn như 20149999
, nhưng chúng dễ phát hiện). Ngược lại, có khoảng 86400 dấu thời gian hợp lệ đại diện cho mỗi ngày.
NB: Có discussion on DBA SE chỉ trích phương pháp lưu trữ ngày này, nhưng trong ngữ cảnh đó, loại ngày chuyên biệt tồn tại, rõ ràng không phải là trường hợp ở đây.
Thx ... Tôi đã làm theo lời khuyên ur và làm cho các trường ngày được biểu diễn dưới dạng "int64" thành tệp proto và tôi sẽ chuyển đổi nó thành Ngày thành lớp java của tôi. – Echo
Đó là những gì tôi thường làm, chỉ cần lưu trữ millis kể từ unoch epoch. – Jeremy
Bạn có đề xuất int64 hoặc fixed64 không? – ticktock