Tôi sẽ lưu trữ giá trị datetime trong cơ sở dữ liệu SQLite (sử dụng thư viện Delphi và DISqlite). Bản chất của db là như vậy mà nó sẽ không bao giờ cần phải được chuyển giao giữa các máy tính hoặc các hệ thống, do đó khả năng tương tác không phải là một hạn chế. Thay vào đó, tiêu điểm của tôi là tốc độ đọc. Trường datetime sẽ được lập chỉ mục và tôi sẽ tìm kiếm trên nó rất nhiều, cũng như đọc hàng ngàn giá trị datetime theo thứ tự.Cách tối ưu để lưu trữ giá trị datetime trong cơ sở dữ liệu SQLite (Delphi)
Kể từ SQLite không có một kiểu dữ liệu rõ ràng cho các giá trị datetime, có một số lựa chọn:
sử dụng kiểu dữ liệu REAL và giá trị TDateTime cửa hàng của Delphi trực tiếp: nhanh nhất, không có chuyển đổi từ chuỗi trên tải; không thể gỡ lỗi ngày bằng cách sử dụng trình quản lý db chẳng hạn như SQLiteSpy, vì ngày tháng sẽ không thể đọc được bằng con người. Không thể sử dụng các hàm ngày SQLite (?)
sử dụng định dạng chuỗi đơn giản, ví dụ: YYYYMMDDHHNNSS: chuyển đổi là cần thiết nhưng tương đối dễ dàng trên CPU (không cần phải quét các dấu phân cách), dữ liệu có thể đọc được. Vẫn không thể sử dụng các hàm ngày SQLite.
làm điều gì đó khác. Bạn nên làm gì?
Tôi đã đọc http://www.sqlite.org/lang_datefunc.html nhưng không có đề cập đến những gì kiểu dữ liệu để sử dụng, và không được chính thức theo học lập trình, tôi không khá grok tập trung vào Julian ngày. Tại sao chuyển đổi bổ sung? Tôi sẽ đọc các giá trị này rất nhiều, vì vậy bất kỳ chuyển đổi bổ sung nào giữa các chuỗi và TDateTime đều bổ sung một chi phí đáng kể.
Tôi cũng đã thấy http://stackoverflow.com/questions/1933720/how-do-i-insert-datetime-value-into-a-sqlite-database nhưng nó không trả lời câu hỏi của tôi về những gì cách tối ưu là, hoặc là có một lý do thực sự thuyết phục để thích định dạng chuỗi ISO (và các chuyển đổi liên quan) hơn chèn trực tiếp các giá trị TDateTime của Delphi. –