DATETIME bắt đầu DATETIME kết thúc
Thay vào đó, tôi khuyên bạn nên sử dụng hai giá trị DATETIME , được gắn nhãn như event_start và event_end .
Thời gian là một công việc phức tạp
Hầu hết trên thế giới hiện đã áp dụng hệ thống đo lường dựa trên cây cối cho hầu hết các phép đo, đúng hay sai. Nhìn chung, điều này là tốt, vì ít nhất tất cả chúng ta đều có thể đồng ý rằng ag, là ml, là cm khối. Ít nhất là gần như vậy. Hệ thống số liệu có nhiều sai sót, nhưng ít nhất nó vẫn còn sai sót trên phạm vi quốc tế.
Tuy nhiên, với thời gian, chúng ta có; 1000 mili giây trong một giây, 60 giây đến một phút, 60 phút đến một giờ, 12 giờ cho mỗi nửa ngày, khoảng 30 ngày mỗi tháng thay đổi theo tháng và thậm chí cả năm được đề cập, mỗi quốc gia có thời gian bù đắp so với các quốc gia khác , cách thời gian được định dạng ở mỗi quốc gia khác nhau.
Đó là rất nhiều điều để hiểu, nhưng dài và ngắn của nó là không thể cho một kịch bản phức tạp như vậy để có một giải pháp đơn giản.
Một số góc có thể được cắt, nhưng có những nơi khôn ngoan hơn là không
Mặc dù câu trả lời hàng đầu ở đây gợi ý rằng bạn lưu trữ một số nguyên phút quá nửa đêm có vẻ hoàn toàn hợp lý, nhưng tôi đã học cách tránh làm như vậy một cách khó khăn.
Lý do để triển khai hai giá trị DATETIME là để tăng độ chính xác, độ phân giải và phản hồi.
Tất cả những điều này đều rất hữu ích khi thiết kế tạo ra kết quả không mong muốn.
Tôi có đang lưu trữ nhiều dữ liệu hơn yêu cầu không?
Ban đầu có thể có vẻ như nhiều thông tin đang được lưu trữ hơn tôi yêu cầu, nhưng có lý do chính đáng để thực hiện điều này.
Lưu trữ thông tin bổ sung này hầu như luôn giúp tôi tiết kiệm thời gian và công sức về lâu dài, bởi vì tôi chắc chắn nhận thấy rằng khi ai đó được cho biết điều gì đó đã diễn ra trong bao lâu, họ cũng sẽ muốn biết sự kiện diễn ra khi nào và ở đâu.
Đó là một hành tinh lớn
Trong quá khứ, tôi đã từng phạm tội khi phớt lờ rằng có những quốc gia khác trên hành tinh này ngoài quốc gia của tôi. Đó có vẻ là một ý tưởng hay vào thời điểm đó, nhưng điều này LUÔN LUÔN dẫn đến các vấn đề, đau đầu và lãng phí thời gian sau đó. LUÔN LUÔN xem xét tất cả các múi giờ.
C #
DateTime hiển thị độc đáo thành một chuỗi trong C #. Phương thức ToString (Định dạng chuỗi) nhỏ gọn và dễ đọc.
Ví dụ
new TimeSpan(EventStart.Ticks - EventEnd.Ticks).ToString("h'h 'm'm 's's'")
Máy chủ SQL
Ngoài ra, nếu bạn đang đọc cơ sở dữ liệu của mình tách biệt với giao diện ứng dụng của bạn, thì dateTimes rất vui khi đọc nhanh và thực hiện các phép tính trên chúng rất đơn giản.
Ví dụ
SELECT DATEDIFF(MINUTE, event_start, event_end)
Tiêu chuẩn ngày ISO8601
Nếu sử dụng SQLite thì bạn không có trường này, vì vậy thay vào đó hãy sử dụng trường Văn bản và lưu trữ nó ở định dạng ISO8601, ví dụ.
"2013-01-27T12: 30: 00 + 0000"
Ghi chú:
Điều này sử dụng đồng hồ 24 giờ *
Phần chênh lệch thời gian (hoặc +0000) của ISO8601 ánh xạ trực tiếp đến giá trị kinh độ của hệ thống định vị GPS (không tính đến tiết kiệm ánh sáng ban ngày hoặc trên toàn quốc).
Ví dụ
TimeOffset=(±Longitude.24)/360
... trong đó ± đề cập đến hướng đông hoặc tây.
Do đó, sẽ đáng xem xét nếu nó có giá trị lưu trữ kinh độ, vĩ độ và độ cao cùng với dữ liệu. Điều này sẽ khác nhau trong ứng dụng.
ISO8601 là một định dạng quốc tế.
Wiki rất hữu ích để biết thêm chi tiết tại http://en.wikipedia.org/wiki/ISO_8601 .
Ngày và giờ được lưu trữ theo giờ quốc tế và độ lệch được ghi lại tùy thuộc vào nơi lưu trữ giờ trên thế giới.
Theo kinh nghiệm của tôi, luôn cần phải lưu trữ ngày và giờ đầy đủ, bất kể tôi có nghĩ là có thời điểm bắt đầu dự án hay không. ISO8601 là một cách làm rất tốt, bền vững trong tương lai.
Tư vấn thêm miễn phí
Nó cũng đáng để nhóm các sự kiện lại với nhau như một chuỗi. Ví dụ: nếu ghi lại một cuộc đua, toàn bộ sự kiện có thể được nhóm theo tay đua, đường đua, điểm kiểm tra mạch và điểm mạch điện.
Theo kinh nghiệm của tôi, việc xác định ai là người đã lưu trữ hồ sơ cũng rất khôn ngoan. Dưới dạng một bảng riêng biệt được điền thông qua trình kích hoạt hoặc dưới dạng một cột bổ sung trong bảng gốc.
Bạn càng đưa vào, bạn càng nhận ra nhiều
Tôi hoàn toàn hiểu mong muốn tiết kiệm không gian nhất có thể, nhưng tôi hiếm khi làm như vậy với cái giá phải trả là mất thông tin.
Một nguyên tắc chung với cơ sở dữ liệu là như tiêu đề đã nói, một cơ sở dữ liệu chỉ có thể cho bạn biết bao nhiêu là dữ liệu có và có thể rất tốn kém khi quay lại dữ liệu lịch sử, lấp đầy khoảng trống.
Giải pháp là làm cho nó chính xác lần đầu tiên. Điều này chắc chắn nói dễ hơn làm, nhưng bây giờ bạn nên có cái nhìn sâu sắc hơn về thiết kế cơ sở dữ liệu hiệu quả và sau đó có cơ hội cải thiện nhiều để thực hiện đúng ngay lần đầu tiên.
Thiết kế ban đầu của bạn càng tốt thì việc sửa chữa sau này càng ít tốn kém.
Tôi chỉ nói tất cả những điều này, bởi vì nếu tôi có thể quay ngược thời gian thì đó là điều tôi sẽ tự nhủ khi đến đó.