Advertisement
akozhomka

Untitled

May 27th, 2021
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.27 KB | None | 0 0
  1. public function actionTest()
  2. {
  3.     $begin = new DateTime('2021-01-01');
  4.     $end = new DateTime('2023-01-01');
  5.  
  6.     $interval = DateInterval::createFromDateString('1 day');
  7.     $period = new DatePeriod($begin, $interval, $end);
  8.  
  9.     foreach ($period as $dt) {
  10.         $date = $dt->format('Y-m-d');
  11.         $res = $this->makeSql($date);
  12.         echo $date . ': ' . $res['q'] . ' (' . $res['ids'] . ')' .  PHP_EOL;
  13.     }
  14. }
  15.  
  16. /**
  17.  * @param $date
  18.  * @return array
  19.  * @throws \yii\db\Exception
  20.  */
  21. private function makeSql($date): array
  22. {
  23.     $sql = 'SELECT COUNT(id) AS q
  24.                 , GROUP_CONCAT(id) AS ids
  25.            FROM yii_doc.season_char_settings
  26.            WHERE (
  27.                      start_day_month_date
  28.                      + INTERVAL YEAR(:DATE)
  29.                      - IF(MONTH(finish_day_month_date) < MONTH(start_day_month_date) AND MONTH(:DATE) < 6, 1, 0) YEAR
  30.                  ) <= :DATE
  31.              AND :DATE < (
  32.                    finish_day_month_date
  33.                    + INTERVAL YEAR(:DATE)
  34.                    + IF(MONTH(finish_day_month_date) < MONTH(start_day_month_date) AND MONTH(:DATE) > 6, 1, 0) YEAR
  35.                )';
  36.  
  37.     return Yii::$app->db
  38.         ->createCommand($sql, [':DATE' => $date])
  39.         ->queryOne();
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement