Đừng. DateTime
các giá trị phải được lưu trữ dưới dạng DateTime
, trừ khi bạn có lý do thực sự chính đáng để lưu trữ chúng (chẳng hạn như để hỗ trợ các giá trị ngày và giờ nằm ngoài giá trị tối thiểu / tối đa của DateTime
), Tôi khuyên bạn nên để nó trong DateTime
cột.
Bạn luôn có thể thao tác với cách trả lại chúng từ cơ sở dữ liệu trong khi Select
hoặc trong lớp trình bày. Để trả lại thời gian unix từ DateTime
, MySql cung cấp một phương thức tích hợp được gọi là UNIX_TIMESTAMP
. Để trả về số mili giây, chỉ cần nhân với 1000, vì dấu thời gian unix là số giây kể từ ngày 1 tháng 1 năm 1970 (không bao gồm giây nhuận). Nếu bạn muốn lưu trữ thời gian unix, bạn sẽ phải sử dụng kiểu dữ liệu int.
Xin lưu ý rằng nếu bạn lưu trữ thời gian unix thay vì lưu trữ DateTime
thực tế giá trị trong một DateTime
cột kiểu dữ liệu, bạn sẽ mất khả năng sử dụng tất cả các ngày giờ được xây dựng trong các chức năng cơ sở dữ liệu một cách dễ dàng. Ví dụ:nếu bạn muốn tìm xem có bao nhiêu hàng thuộc một tháng cụ thể, trước tiên bạn sẽ phải dịch dữ liệu từ int sang datetime và chỉ sau đó bạn mới có thể tính toán được điều đó.
Bạn cũng sẽ mất độ chính xác (vì thời gian unix không chính xác ngay cả trên độ phân giải 1 giây, vì nó bỏ qua giây nhuận).
Vì vậy, để kết luận - Khi cơ sở dữ liệu cung cấp cho bạn một kiểu dữ liệu phù hợp với dữ liệu, đừng lưu trữ dữ liệu đó bằng một kiểu dữ liệu khác. sử dụng Date
loại dữ liệu nếu bạn chỉ muốn lưu trữ ngày, DateTime
loại dữ liệu nếu bạn muốn lưu trữ các giá trị datetime và Time
kiểu dữ liệu nếu bạn muốn lưu trữ một thời gian cụ thể trong ngày.
Tái bút
Khi xử lý các giá trị ngày giờ, Đặc biệt nếu bạn phải giao dịch với khách hàng từ nhiều địa điểm, LUÔN LUÔN chỉ lưu trữ ngày giờ UTC trong cơ sở dữ liệu của bạn, tất nhiên, bạn muốn phát điên lên.