Tôi đang gặp khó khăn về việc lưu các giá trị ngày và thời gian trong định dạng TIMESTAMP của MySQL so với định dạng INTSIGNED INT tùy chỉnh. Những cân nhắc chính ở đây là tốc độ truy xuất, tính toán phạm vi thích hợp trong PHP và định dạng không thường xuyên vào các giá trị có thể đọc được của con người.Sử dụng TIMESTAMP của MySQL và lưu trữ dấu thời gian trực tiếp
Không gian lưu trữ cần thiết đối với từng loại và phạm vi của họ:
DATETIME 8 bytes '1000-01-01 00:00:00' to '9999-12-31 23:59:59'
TIMESTAMP 4 bytes '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
UNSIGNED INT 4 bytes (Maximum Value 4294967295)
Tôi không cần một loạt các DATETIME ở tất cả. Tôi bị rách giữa TIMESTAMP và UNSIGNED INT.
luận cứ ủng hộ unsigned int:
- Một UNIX timestamp của 4294967295 cải để Sun, ngày 07 Tháng Hai 2106 06:28:15 GMT mà là nhiều hơn dấu thời gian và đủ tốt cho tôi
- So sánh các dấu thời gian trực tiếp trong PHP sẽ nhanh hơn thay vì chuyển đổi TIMESTAMPs qua strtotime() và sau đó so sánh chúng
Lợi thế duy nhất TIMESTAMP sẽ cho tôi khi tôi đọc các giá trị từ bảng mysql theo cách thủ công và cần phải ' nhìn thấy chúng.
Có lý do thuyết phục nào để sử dụng TIMESTAMP và không phải là UNSIGNED INT không?
Xem liên quan: [datetime vs timestamp?] (Http://stackoverflow.com/questions/409286/datetime-vs-timestamp) – JYelton
Dấu thời gian 32 bit sẽ chỉ xuất hiện cho đến tháng 1 năm 2038 và nhiều thư viện vẫn đang sử dụng 32 bit time_t thay vì 64bit, vì vậy bạn có thể gặp phải sự cố về tính di động. Bên trong, PHP lưu trữ các dấu thời gian/datetime ở định dạng số anyways, và chỉ chuyển đổi thành các chuỗi kiểu yyyy-mm-dd tốt đẹp khi truy xuất. –