2012-08-02 44 views
6

Tôi muốn lưu trữ ngày và giờ mà người dùng thực hiện một hành động trên trang web của tôi vào cơ sở dữ liệu MySQL. Tôi muốn để có thể làm những việc sau một cách dễ dàng:Cách tốt nhất để lưu trữ ngày và giờ trong cơ sở dữ liệu MySQL để hiển thị sau với PHP là gì?

  • Store ngày và thời gian như một lĩnh vực trong cơ sở dữ liệu
  • Sử dụng tích hợp sẵn trong PHP hoặc chức năng MySQL để tạo ra ngày thời gian của hành động
  • Lưu trữ ngày giờ dựa trên thời gian của máy chủ của tôi và không phải lo lắng về múi giờ của người dùng.
  • Order By ngày thời gian lĩnh vực khi tôi truy vấn MySQL
  • Sau đó, hiển thị ngày-thời gian trong nhiều định dạng khác nhau bằng cách sử dụng được xây dựng trong các phương pháp PHP

Dưới đây là những câu hỏi của tôi:

  • gì nên sử dụng loại dữ liệu nào trong MySQL (ví dụ: timestamp, datetime ...)?
  • Tôi nên sử dụng phương pháp nào để tạo ngày giờ (ví dụ: now() của MySQL, PHP date() ...)?
  • Tôi nên sử dụng phương pháp PHP nào sau này để định dạng ngày giờ theo nhiều cách khác nhau (ví dụ: 23/4/2012, 5 giờ chiều ngày Thứ Hai, Tháng 7 năm 2012 ...)?
+1

[Không phải câu hỏi này được hỏi trước] (http://stackoverflow.com/questions/409286/datetime-vs-timestamp)? – Matt

Trả lời

2

Tôi sẽ lưu nó dưới dạng datetime, không phải là dấu thời gian.

Tôi thường sử dụng hàm ngày tháng PHP và theo cách đó nếu bạn muốn lưu trữ thời gian liên quan đến múi giờ của người dùng, bạn chỉ cần thay đổi múi giờ dựa trên cài đặt của người dùng.

Khi bạn kéo nó ra khỏi cơ sở dữ liệu, sử dụng strtotime() để chuyển đổi nó, sau đó bạn có thể sử dụng tất cả các tính năng ngày() để hiển thị nó theo bất kỳ cách nào bạn muốn. Ví dụ:

echo date('F j, Y',strtotime($db_datetime)); //Displays as 'March 5, 2012' 
0

Nếu bạn thiết lập kiểu dữ liệu mysql để một dấu thời gian không nullable, sau đó lưu hàng với một giá trị null cho cột đó, mysql sẽ tự động cập nhật các dấu thời gian cho bạn.

Để đọc lại, bạn chỉ có thể sử dụng strtotime của php và đối tượng ngày để đưa nó vào định dạng bạn cần.

0

Bạn nên sử dụng datatype datetime cho yêu cầu của mình. Nó sẽ lưu trữ cả ngày và giờ từ trường nhập của bạn dựa trên truy vấn của bạn.

Để truy xuất ngày giờ, bạn có thể sử dụng chức năng date_format() của mysql hoặc chức năng date() của PHP. Ngày giờ sẽ luôn được lưu trữ theo thời gian của máy chủ chứ không phải theo thời gian của khách hàng.

Các vấn đề liên quan