Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function actionTest()
- {
- $begin = new DateTime('2021-01-01');
- $end = new DateTime('2023-01-01');
- $interval = DateInterval::createFromDateString('1 day');
- $period = new DatePeriod($begin, $interval, $end);
- foreach ($period as $dt) {
- $date = $dt->format('Y-m-d');
- $res = $this->makeSql($date);
- echo $date . ': ' . $res['q'] . ' (' . $res['ids'] . ')' . PHP_EOL;
- }
- }
- /**
- * @param $date
- * @return array
- * @throws \yii\db\Exception
- */
- private function makeSql($date): array
- {
- $sql = 'SELECT COUNT(id) AS q
- , GROUP_CONCAT(id) AS ids
- FROM yii_doc.season_char_settings
- WHERE (
- start_day_month_date
- + INTERVAL YEAR(:DATE)
- - IF(MONTH(finish_day_month_date) < MONTH(start_day_month_date) AND MONTH(:DATE) < 6, 1, 0) YEAR
- ) <= :DATE
- AND :DATE < (
- finish_day_month_date
- + INTERVAL YEAR(:DATE)
- + IF(MONTH(finish_day_month_date) < MONTH(start_day_month_date) AND MONTH(:DATE) > 6, 1, 0) YEAR
- )';
- return Yii::$app->db
- ->createCommand($sql, [':DATE' => $date])
- ->queryOne();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement