Đôi khi bạn có thể cần lấy dữ liệu hàng giờ hoặc tìm nạp các bản ghi hàng giờ trong MySQL. Trong bài viết này, chúng ta sẽ xem xét cách lấy dữ liệu mỗi giờ trong MySQL.
Cách lấy dữ liệu mỗi giờ trong MySQL
Dưới đây là các bước để lấy dữ liệu mỗi giờ trong MySQL. Giả sử bạn có bảng sau doanh số bán hàng (id, order_date, amount)
mysql> create table sales(id int, order_date datetime, amount int); mysql> insert into sales(id, order_date, amount) values(1, '2021-02-02 08:15:00',250), (2, '2021-02-02 08:30:00',200), (3, '2021-02-02 08:55:00',150), (4, '2021-02-02 09:15:00',125), (5, '2021-02-02 09:30:00',250), (6, '2021-02-02 09:45:00',200), (7, '2021-02-02 10:15:00',180), (8, '2021-02-02 10:30:00',125), (9, '2021-02-02 10:45:00',200), (10, '2021-02-02 11:15:00',250), (11, '2021-02-02 11:30:00',150), (12, '2021-02-02 11:45:00',200); mysql> select * from sales; +------+---------------------+--------+ | id | order_date | amount | +------+---------------------+--------+ | 1 | 2021-02-02 08:15:00 | 250 | | 2 | 2021-02-02 08:30:00 | 200 | | 3 | 2021-02-02 08:55:00 | 150 | | 4 | 2021-02-02 09:15:00 | 125 | | 5 | 2021-02-02 09:30:00 | 250 | | 6 | 2021-02-02 09:45:00 | 200 | | 7 | 2021-02-02 10:15:00 | 180 | | 8 | 2021-02-02 10:30:00 | 125 | | 9 | 2021-02-02 10:45:00 | 200 | | 10 | 2021-02-02 11:15:00 | 250 | | 11 | 2021-02-02 11:30:00 | 150 | | 12 | 2021-02-02 11:45:00 | 200 | +------+---------------------+--------+
Cách lấy dữ liệu mỗi giờ trong MySQL
Đây là truy vấn SQL để lấy dữ liệu mỗi giờ trong MySQL.
mysql> select hour(order_date),sum(amount) from sales group by hour(order_date); +------------------+-------------+ | hour(order_date) | sum(amount) | +------------------+-------------+ | 8 | 600 | | 9 | 575 | | 10 | 505 | | 11 | 600 | +------------------+-------------+
Trong truy vấn trên, chúng tôi chỉ cần nhóm theo order_date sử dụng hàm HOUR và tổng hợp số tiền sử dụng hàm SUM.
Hàm HOUR truy xuất số giờ từ một giá trị ngày / giờ / ngày giờ nhất định, có thể được cung cấp dưới dạng một chuỗi hoặc tên cột theo nghĩa đen.
Nếu bạn muốn hiển thị các giá trị giờ bằng ký hiệu SA / CH, chẳng hạn như 8AM, 9AM, v.v., thì bạn cần sử dụng hàm date_format cho phép bạn thay đổi định dạng của một giá trị ngày / giờ / datetime nhất định, có thể được cung cấp dưới dạng chuỗi chữ hoặc tên cột.
mysql> select date_format(order_date,'%H %p') as hour, sum(amount) as total_sales from sales group by date_format(order_date,'%H %p'); +-------+-------------+ | hour | total_sales | +-------+-------------+ | 08 AM | 600 | | 09 AM | 575 | | 10 AM | 505 | | 11 AM | 600 | +-------+-------------+
Cần một công cụ báo cáo cho MySQL? Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!