sql >> データベース >  >> RDS >> Mysql

日付範囲を対応する週に分割

    このスニペットは、日曜日を週の最初の日として使用します:

        $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++;
            }
        }
    

    毎週、すべての日が含まれます。

    毎週の最初と最後の日だけが必要な場合は、array_shiftを使用できます。 およびarray_pop それらを取得します。たとえば、最初の1週間は、次を使用できます。

        $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
    

    毎週の開始日と終了日が必要な場合は、次の方法で行います。

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

    これは$rangesの出力です 私にとって:

        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. ポリゴン内のmysqlクエリポイント-結果なし

    2. WordPressインストールのwp_optionsテーブルのトランジェントを削除できますか?

    3. Windows上のODBCアプリケーションをSugarCRMに接続します

    4. ルートに対しても機能しないoutfileに*を選択します