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

Chia phạm vi ngày thành các tuần tương ứng

Đoạn mã này sử dụng Chủ nhật làm ngày đầu tiên trong tuần:

    $start = new DateTime('2014-10-01');
    $end = new DateTime('2014-10-31 23:59');
    $interval = new DateInterval('P1D');
    $dateRange = new DatePeriod($start, $interval, $end);

    $weekNumber = 1;
    $weeks = array();
    foreach ($dateRange as $date) {
        $weeks[$weekNumber][] = $date->format('Y-m-d');
        if ($date->format('w') == 6) {
            $weekNumber++;
        }
    }

Mỗi tuần sẽ có tất cả các ngày trong đó.

Nếu bạn chỉ muốn ngày đầu tiên và ngày cuối cùng của mỗi tuần thì bạn chỉ cần sử dụng array_shiftarray_pop để có được chúng. Ví dụ:trong tuần đầu tiên, bạn có thể sử dụng:

    $wk1Start = array_shift($weeks[1]); //gives you first day of week 1
    $wk1End = array_pop($weeks[1]); // give you the last day of week 1

Nếu bạn muốn ngày bắt đầu và ngày kết thúc cho mỗi tuần, đây là một cách thực hiện:

    $ranges = array_map(function($week) {
        return 'start: ' . array_shift($week) 
            . ', end: ' . array_pop($week); },
    $weeks);

Đây là đầu ra của $ranges cho tôi:

    Array
    (
        [1] => start: 2014-10-01, end: 2014-10-04
        [2] => start: 2014-10-05, end: 2014-10-11
        [3] => start: 2014-10-12, end: 2014-10-18
        [4] => start: 2014-10-19, end: 2014-10-25
        [5] => start: 2014-10-26, end: 2014-10-31
    )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối phải hợp lệ và mở VB.Net

  2. đặt hàng theo nhóm trong concat

  3. Cách chèn dữ liệu mặc định vào bảng bằng cách sử dụng tệp import.sql trong Hibernate, Ứng dụng MySQL

  4. mysql regex inverse (chỉ dành cho REGEXP)

  5. Truy cập vào một bảng cụ thể trong thẻ html