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

GROUP BY dấu thời gian chồng chéo khoảng thời gian Truy vấn MySQL

Tôi nghĩ bạn chỉ muốn đặt giờ thành 5, để phù hợp với phạm vi của bạn. Nếu vậy, bạn có thể làm điều này:

SELECT cast(date(stamp) as datetime) + interval 5 hour
       Sum(value) 
FROM   table 
WHERE  stamp >= Date_sub('2012-12-02 05:00:00', INTERVAL 1 day) 
       AND stamp < '2013-01-01 05:00:00' 
GROUP  BY Date(stamp) 

Nhưng, tôi nghĩ bạn có thể thực sự muốn diễn đạt điều này hơi khác một chút:

SELECT cast(date(stamp - interval 5 hour) as datetime) + interval 5 hour
       Sum(value) 
FROM   table 
WHERE  stamp >= Date_sub('2012-12-02 05:00:00', INTERVAL 1 day) 
       AND stamp < '2013-01-01 05:00:00' 
GROUP  BY Date(stamp - interval 5 hour)

Điều này thực sự sắp xếp lại các ngày trên ranh giới 5 giờ.

Lưu ý:các truy vấn này chưa được kiểm tra, do đó có thể có lỗi cú pháp.

Điều này giả định rằng dấu thời gian thực sự là một ngày giờ. Nếu đó là dấu thời gian UNIX, trước tiên bạn cần chuyển đổi nó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bind_param Lỗi không đối tượng w / mysqli

  2. Cập nhật các hàng dựa trên các hàng khác trong cùng một bảng

  3. câu lệnh cập nhật pdo sử dụng concat không hoạt động

  4. Làm cách nào để thêm vào từng hàng trong MySQL?

  5. Làm cách nào để xóa tất cả các bản ghi trùng lặp trong bảng MySQL mà không có bảng tạm thời