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

Cách để có được 7 ngày qua bằng PHP

Cách mạnh mẽ nhất để thực hiện điều này là sử dụng DateTime thay vì strtotime :

$now = new DateTime( "7 days ago", new DateTimeZone('America/New_York'));
$interval = new DateInterval( 'P1D'); // 1 Day interval
$period = new DatePeriod( $now, $interval, 7); // 7 Days

Bây giờ, bạn có thể tạo mảng ngày tháng của mình như sau:

$sale_data = array();
foreach( $period as $day) {
    $key = $day->format( 'M d');
    $sale_data[ $key ] = 0;
}

này sẽ khởi chạy mảng của bạn đến một cái gì đó như:

array(8) {
 ["Jun 18"]=>      int(0)
  ["Jun 19"]=>      int(0)
  ["Jun 20"]=>      int(0)
  ["Jun 21"]=>      int(0)
  ["Jun 22"]=>      int(0)
  ["Jun 23"]=>      int(0)
  ["Jun 24"]=>      int(0)
  ["Jun 25"]=>      int(0)
}

Bây giờ bạn có một mảng với tất cả các ngày có thể có trong 7 ngày qua và bạn có thể thực hiện điều này trong vòng lặp của mình:

$display_date = date('M d', $sale['created']);
$sale_data[$display_date] += $sale['amt'];

Bạn không cần kiểm tra xem khóa mảng có tồn tại hay không, vì nó được đảm bảo là tồn tại.

Cuối cùng, tôi khuyên bạn nên xem xét DATETIME hoặc các loại cột ngày / giờ liên quan khác, vì chúng sẽ được sử dụng nhiều hơn ở đây hơn là lưu trữ dấu thời gian UNIX. Bạn có thể sử dụng các hàm ngày / giờ của MySQL để chọn đúng các hàng bạn đang tìm kiếm thay vì phải tạo dấu thời gian UNIX mỗi khi bạn muốn truy vấn dữ liệu dựa trên 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. Hàm MAX được sử dụng với mệnh đề GROUP BY

  2. Khi nào thì đóng kết nối MySQL bằng node-mysql?

  3. Chọn bằng cách sử dụng tên bảng được tạo động

  4. Sự cố bộ đệm MySqlDataReader GetBytes ...

  5. Sử dụng DISTINCT bên trong JOIN sẽ gây ra sự cố