-
Thông thường, bạn không nên làm như vậy:các kiểu dữ liệu trong lớp cơ sở dữ liệu phải có ý nghĩa riêng (càng tốt) và không phụ thuộc vào ứng dụng của bạn để diễn giải chúng. Như @Jim DeLaHunt nói , điều này cho phép cơ sở dữ liệu dễ dàng thao tác / diễn giải chúng từ SQL theo yêu cầu (và cũng cho phép bạn dễ dàng truy cập cùng một dữ liệu từ một cơ sở mã ứng dụng khác trong tương lai).
MySQL có năm kiểu thời gian , chỉ có hai trong số đó lưu trữ cả ngày và giờ:
DATETIME
vàTIMESTAMP
.Như những người khác đã ám chỉ, sự khác biệt phụ thuộc vào việc bạn có muốn lưu trữ múi giờ hay không - mặc dù tôi thấy rằng cách xem xét nó khá khó hiểu:
-
TIMESTAMP
sử dụngtime_zone
của phiên biến để chuyển đổi đầu vào thành dấu thời gian UTC và sau đó quay lại lần nữa cho đầu ra:nó hữu ích để chỉ định một thời điểm chính xác trong thời gian; -
DATETIME
chỉ cần lưu trữ ngày và giờ mà không liên quan đến múi giờ, giống như chụp ảnh lịch và đồng hồ:nó hữu ích để chỉ định một sự kiện xảy ra trong cùng một giờ địa phương trên toàn cầu.
-
-
Cũng giống như bạn khai báo bất kỳ cột nào khác, bạn chỉ định kiểu dữ liệu có liên quan sau tên cột.
Hãy coi chừng
TIMESTAMP
có các tính năng bổ sung, chẳng hạn như cập nhật tự động , mà bạn có thể muốn tắt trong khai báo cột của mình nếu muốn. -
Sử dụng một trong các kiểu tạm thời ở trên, bạn sẽ có thể thực hiện tất cả điều này (sử dụng chức năng ngày theo yêu cầu). Đầu ra mặc định của
TIMESTAMP
vàDATETIME
loại là một chuỗi trong'YYYY-MM-DD HH:MM:SS'
định dạng.Cụ thể, "thời gian đã trôi qua" từ việc so sánh hai giá trị chẳng hạn có thể được lấy bằng
TIMEDIFF()
chức năng:SELECT TIMEDIFF(end, start) AS elapsed FROM my_table WHERE ...