Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách nhóm các bản ghi datebase thành các khoảng thời gian 15 phút

Trước hết, bạn có một lỗi nhỏ trong WHERE của mình mệnh đề. Bạn cần:

where access_time >= '2013-05-28 02:00:00' 
  and access_time < '2013-05-28 10:00:00'

bởi vì phạm vi một phần tư giờ của bạn chạy từ một thời điểm cụ thể cho đến thời điểm trước thời gian cụ thể khác. Bạn cần < , không phải <= , trong khoảng thời gian cuối cùng của bạn.

Sau đó, bạn cần một biểu thức có thể mất DATETIME tùy ý và chuyển đổi nó thành DATETIME vào đầu một phần tư giờ mà nó xảy ra.

Điều này sẽ làm được điều đó.

DATE_FORMAT(datestamp,'%Y-%m-%d %H:00:00') +
            INTERVAL (MINUTE(datestamp) -
                      MINUTE(datestamp) MOD 15) MINUTE

Nó lần lượt, ví dụ:'2014-05-07 14:53:22' , thành '2014-05-07 14:45:00' .

Bạn có thể định nghĩa nó như một hàm được lưu trữ như thế này nếu bạn muốn:

DELIMITER $$
DROP FUNCTION IF EXISTS `TRUNC_15_MINUTES`$$
CREATE  FUNCTION `TRUNC_15_MINUTES`(datestamp DATETIME) 
                 RETURNS DATETIME
    NO SQL
    DETERMINISTIC
    RETURN DATE_FORMAT(datestamp,'%Y-%m-%d %H:00:00') +
                INTERVAL (MINUTE(datestamp) -
                          MINUTE(datestamp) MOD 15) MINUTE$$
DELIMITER ;

Sau đó, bạn có thể viết truy vấn của mình như sau:

 select TRUNC_15_MINUTES(access_time) AS period_starting,
        user, count(user) as users 
   from user_access
 where access_time >= '2013-05-28 02:00:00' 
   and access_time <  '2013-05-28 10:00:00'
 group by TRUNC_15_MINUTES(access_time), user
 order by TRUNC_15_MINUTES(access_time), user

Điều này được viết ở đây. http://www.plumislandmedia.net/mysql/sql-reporting- khoảng thời gian /



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ trích xuất ngày từ trường datetime (mysql) và gán nó cho biến php

  2. Mysql UUID_SHORT () có thể so sánh với UUID () không

  3. Tạo một bảng tạm thời với ngày tháng

  4. Mục nhập trùng lặp '0' cho khóa 'CHÍNH'

  5. Tạo một câu lệnh INSERT ... SELECT nguyên tử