Lưu thời gian vào Database Mysql khi insert, update bản ghi

Bạn muốn tìm hiểu cách lưu mốc thời gian thực hiện tạc vụ insert, update các bản ghi trong cơ sở dữ liệu của thành viên trong dự án của mình? Bài viết này unitop.vn sẽ giúp bạn tư duy và cách lưu thời gian vào database vào mysql trong các dự án thực tế.

Tại sao cần lưu thời gian khi insert, update bản ghi trong dự án?

Lưu lại mốc thời gian xảy ra một hành động ở trên website vô cùng quan trọng. Nhờ nó mà bạn có thể theo dõi xem ai đã làm gì vào thời điểm nào ở trên hệ thống.

Ví dụ như:

  • Bài viết, sản phẩm được tạo/chỉnh sửa bởi ai vào lúc nào?
  • Đơn hàng được đặt vào thời điểm nào?
  • Reviews sản phẩm được tạo/cập nhật bởi ai vào lúc nào?

Ngoài ra nhờ lưu trữ thời gian bạn có thể xuất các báo cáo đơn hàng, nội dung trên website qua các khoảng thời gian theo ngày, tuần, tháng, năm và khoảng thời gian cố định nào đó.

Đây là lý do thao tác lưu thời gian trong quá trình tạo(create) và chỉnh sửa(update) trong database vô cùng quan trọng, không thể thiếu trong website.

Cách lưu thời gian vào database mysql

Trước khi bắt đầu ta cần đặt câu hỏi

Để lưu thời gian vào database ta cần làm gì?

Tư duy nào…

Nếu bạn đã học về thiết kế cơ sở dữ liệu thì bạn sẽ hiểu được rằng để lưu trữ được dữ liệu cần có cột chứa dữ liệu phải không?

Tạo trường trong database lưu dữ liệu

Ở bước này bạn truy cập vào bảng cần lưu thông tin thời gian, bạn tạo mới 2 trường mới có tên.

  • created_at: Lưu trữ thời gian tạo bản ghi.
  • updated_at: Lưu trữ thời gian khi bản ghi được cập nhật.

Về kiểu dữ liệu bạn có thể sử dụng một trong hai lựa chọn dưới:

  • DATETIME: Kiểu dữ liệu này lưu trữ cả ngày và giờ dưới dạng ‘YYYY-MM-DD HH:MM:SS’. Nó được sử dụng để lưu trữ thời gian cụ thể và thường là lựa chọn phổ biến cho việc lưu trữ thời gian tạo (created_at) và thời gian cập nhật (updated_at).
  • TIMESTAMP: Kiểu dữ liệu này cũng lưu trữ cả ngày và giờ, nhưng có thể được tự động cập nhật khi có sự thay đổi trong bản ghi. Thường thì kiểu dữ liệu này được sử dụng cho thời gian cập nhật tự động.

Theo tôi giải pháp tốt hơn ta nên sử dụng kiểu TIMESTAMP vừa đáp ứng được lưu trữ đầy đủ dữ liệu thời gian đồng thời ta có thể thiết lập để hệ thống tự động update thời gian khi bản ghi xảy ra hành động chỉnh sửa dữ liệu.

Tạo trường created_at trên phpmyadmin

Cấu trúc trường

  • Tên: created_at
  • Kiểu: TIMESTAMP
  • Mặc định: CURRENT_TIMESTAMP

Lưu ý: Trường created_at ta nên sử dụng giá trị mặc định CURRENT_TIMESTAMP. Với cài đặt này ngay khi insert bản ghi hệ thống tự lấy thời gian hiện tại để thêm vào bản ghi mà chúng ta không cần phải thêm giá trị thời gian vào trường này theo cách thủ công từ chuỗi quy vấn sql insert.

Ở quá trình insert bản ghi từ php bạn không cần quan tâm đến dữ liệu của trường created_at vì mọi thứ đã đã được xử lý tự động ở phía mysql.

Thật tuyệt vời đúng không? Bạn xem ngay hình ảnh bên dưới để thực hành chuẩn xác.

Tạo trường updated_at trên phpmyadmin

Cấu trúc:

  • Tên: updated_at
  • Kiểu: TIMESTAMP
  • Mặc định: CURRENT_TIMESTAMP
  • Thuộc tính: on update CURRENT_TIMESTAMP

Lưu ý: Trường updated_at sinh ra để lưu trữ lại thời gian bản ghi được cập nhật. Khi để giá trị mặc định Null đồng nghĩa với trường này mang giá trị null khi bản ghi được tao ra.

Với thuộc tính on update CURRENT_TIMESTAMP được cài đặt nó sẽ tự động lấy thời gian hiện tại và cập nhật trong thường updated_at.

Tương tự quá trình insert bản ghi từ php bạn không cần quan tâm đến dữ liệu của trường updated_at vì mọi thứ đã đã được xử lý tự động ở phía mysql.

Tóm lại với những cài đặt bên trên chúng ta hoàn toàn yên tâm rằng dữ liệu được đẩy vào 2 trường created_at và updated_at một cách nhịp nhàng tự động mà không cần phải can thiệp thông qua truy vấn từ phía php.

Cách hiển thị thời gian trên giao diện người dùng

Khi bạn đã lưu trữ dữ liệu created_atupdated_at trong cơ sở dữ liệu và muốn hiển thị chúng cho người dùng, bạn cần thực hiện các bước sau:

  1. Truy vấn dữ liệu từ cơ sở dữ liệu: Đầu tiên, bạn cần viết câu truy vấn SQL để truy vấn dữ liệu từ bảng của bạn, bao gồm cả trường created_atupdated_at.
  2. Định dạng và hiển thị dữ liệu: Khi bạn đã có dữ liệu từ cơ sở dữ liệu, bạn có thể định dạng nó theo cách bạn muốn và hiển thị trên giao diện người dùng.
<?php
$servername = "your_servername";
$username = "your_username";
$password = "your_password";
$dbname = "your_dbname";

// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);

// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
}

// Truy vấn dữ liệu
$sql = "SELECT id, created_at, updated_at FROM your_table_name";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // Lặp qua từng dòng dữ liệu
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . "<br>";
        echo "Created At: " . $row["created_at"] . "<br>";
        echo "Updated At: " . $row["updated_at"] . "<br>";
        echo "<hr>";
    }
} else {
    echo "Không có dữ liệu.";
}

// Đóng kết nối
$conn->close();
?>

Trong trường hợp bạn muốn đổi định dạng hiển thị khác với định dạng mặc định ‘YYYY-MM-DD HH:MM:SS’ bạn có thể sử dụng hàm date php để tùy chỉnh hiển thị theo cấu trúc của mình.

$timestamp = "2023-08-23 15:30:00";
$formattedTime = date("d-m-Y H:i:s", strtotime($timestamp));
echo $formattedTime; // Kết quả: 23-08-2023 15:30:00

Xem thêm: date: Hàm hiển thị ngày tháng trong php

Tổng kết

Trước đây tôi phải xử lý thời gian ở phía Php sau đó insert vào mysql theo quy vấn sql thường dùng. Khi biết và sử dụng cách lưu trữ thời gian tối ưu như tôi chia sẻ bạn bên trên mọi thứ trở nên đơn giản và gọn gàng hơn.

Nếu như bạn đang học lập trình web hoặc là người đã đi làm thì đây là món quà mà unitop tặng cho bạn.

Hi vọng rằng bạn sẽ áp dụng thành công trên dự án của mình.

Quá trình học thực hành, nếu bạn có bất kỳ chia sẻ nào bạn có thể để lại ở phần comment, tôi sẽ đọc và hỗ trợ bạn.

Phan Văn Cương founder unitop.vn

P/s: Nhân tiện nếu bạn đang học lập trình web backend php nhưng bị mất phương hướng, bạn có thể theo giỏi và lộ trình 8 + 2 bước học web đi làm. Tại đây combo Php MasterLaravel Pro là vũ khí để giúp bạn thành thạo backend php đi làm.

Hẹn gặp lại bạn trong bài viết tiếp theo!

Đề xuất cho bạn

Subscribe
Notify of
guest

0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

Tặng Ebook chia sẻ kinh nghiệm học lập trình web đi làm cho người mới bắt đầu!

Đây là tấm bản đồ chia sẻ lại cách học lập trình web đi làm đã giúp nhiều học trò của unitop kiếm được thu nhập từ 8-30tr mỗi tháng.

Ebook Bí quyết học lập trình web đi làm - Phan Văn Cương - Unitop.vn
0
Bạn đang nghĩ gì? Hãy để lại bình luận tại đâyx
()
x