]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
fix charts-for-management for pgsql
authorAlexander Smirnov <fredeom@mail.ru>
Mon, 8 Apr 2024 06:16:19 +0000 (09:16 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Mon, 8 Apr 2024 06:16:19 +0000 (09:16 +0300)
erp24/records/ChartDataSearch.php

index 0328fe2f66b887b219c4b0caec607bdeac32c4c5..37b3e4b9f4056738613d7995af8136281aaeb43c 100644 (file)
@@ -321,7 +321,7 @@ class ChartDataSearch
 
         //region DATE
         $dates_query = (new Query())->from('(
-                SELECT :date_end - INTERVAL (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) DAY AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -374,7 +374,7 @@ class ChartDataSearch
         $plan_query = PlanStore::find()
             ->andWhere([
                 'BETWEEN',
-                'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')',
+                'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')',
                 date('Y-m-d', strtotime($this->date_start)),
                 date('Y-m-d', strtotime($this->date_end))
             ])
@@ -385,13 +385,13 @@ class ChartDataSearch
                     'store_dynamic.store_id = plan_store.store_id',
                     [
                         '<=',
-                        new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                        new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')')
+                        new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                        new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')')
                     ],
                     [
                         '>',
-                        new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                        new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')')
+                        new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                        new Expression('TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')')
                     ],
                     'store_dynamic.category = 1'
                 ]
@@ -399,13 +399,13 @@ class ChartDataSearch
 
         $plan_query->select([
             'plan' => $this->attributes_array[$this->attribute_name]['plan_attribute'][0] ?? 1,
-            'date' => 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')',
+            'date' => 'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')',
             'cluster_id' => 'store_dynamic.value_int',
             'store_id' => 'store_dynamic.store_id'
         ]);
 
         $plan_query->groupBy([
-            'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day), \'%Y-%m-%d\')',
+            'TO_CHAR(CONCAT_WS(\'.\', plan_store.year, plan_store.month, plan_store.day)::timestamp, \'YYYY-MM-DD\')',
             'store_dynamic.value_int',
             'store_dynamic.store_id'
         ]);
@@ -416,16 +416,15 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
-
         $query->leftJoin(
             ['rnp' => $rnp_query],
             [
                 'AND',
-                'dates_column.date = rnp.date',
+                'date(dates_column.date) = rnp.date',
                 'city_store.id = rnp.store_id',
                 'store_dynamic.value_int = rnp.cluster_id',
                 'rnp_alias.id = rnp.alias'
@@ -554,7 +553,7 @@ class ChartDataSearch
         //region Даты
         // Нужно для соединения составляющих запроса (left join)
         $dates_query = (new Query())->from('(
-                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'%Y-%m-%d\') AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -572,8 +571,8 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
         //endregion
@@ -599,7 +598,7 @@ class ChartDataSearch
         $sales_query = Sales::find();
 
         $sales_query->addSelect([
-            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END',
+            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END',
             'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
@@ -618,13 +617,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END')
                 ],
                 'store_dynamic.category = 1'
             ]
@@ -635,13 +634,13 @@ class ChartDataSearch
         $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']);
         $invalid_sales->andWhere([
             '>=',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($this->date_start))
         ]);
 
         $invalid_sales->andWhere([
             '<=',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime('+1 week', strtotime($this->date_end)))
         ]);
 
@@ -651,7 +650,7 @@ class ChartDataSearch
         //endregion
 
         $sales_query->addGroupBy([
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date, \'YYYY-MM-DD\') END',
             'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'store_dynamic.value_int',
             'store_dynamic.id',
@@ -664,7 +663,7 @@ class ChartDataSearch
         $write_offs_query = WriteOffs::find();
 
         $write_offs_query->addSelect([
-            'date' => 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')',
+            'date' => 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')',
             'shift_type' => 'CASE WHEN extract(HOUR from write_offs.date) >= 8 AND extract(HOUR from write_offs.date) < 20 THEN 1 ELSE 2 END',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
@@ -688,13 +687,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = export_import_table.entity_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 'store_dynamic.category = 1',
             ]
@@ -705,7 +704,7 @@ class ChartDataSearch
         ]);
 
         $write_offs_query->addGroupBy([
-            'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')',
             'CASE WHEN extract(HOUR from write_offs.date) >= 8 AND extract(HOUR from write_offs.date) < 20 THEN 1 ELSE 2 END',
             'store_dynamic.value_int',
             'store_dynamic.id',
@@ -737,13 +736,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract (HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
                 'store_dynamic.category = 1'
             ]
@@ -787,13 +786,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = export_import_table.entity_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 'store_dynamic.category = 1'
             ]
@@ -824,14 +823,14 @@ class ChartDataSearch
         //Продажи
         $sales_query->andWhere([
             'BETWEEN',
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($this->date_start)),
             date('Y-m-d', strtotime($this->date_end))
         ]);
 
         $sales_products->andWhere([
             'BETWEEN',
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($this->date_start)),
             date('Y-m-d', strtotime($this->date_end))
         ]);
@@ -839,7 +838,7 @@ class ChartDataSearch
         //Списания
         $write_offs_query->andWhere([
             'BETWEEN',
-            'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($this->date_start)),
             date('Y-m-d', strtotime($this->date_end))
         ]);
@@ -847,7 +846,7 @@ class ChartDataSearch
         //По продуктам
         $write_offs_product_query->andWhere([
             'BETWEEN',
-            'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($this->date_start)),
             date('Y-m-d', strtotime($this->date_end))
         ]);
@@ -1088,7 +1087,7 @@ class ChartDataSearch
         //region Даты
         // Нужно для соединения составляющих запроса (left join)
         $dates_query = (new Query())->from('(
-                SELECT :date_end - INTERVAL (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) DAY AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -1106,8 +1105,8 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
         //endregion
@@ -1133,7 +1132,7 @@ class ChartDataSearch
         $sales_query = Sales::find();
 
         $sales_query->addSelect([
-            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
@@ -1152,13 +1151,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
             ]
         );
@@ -1179,20 +1178,20 @@ class ChartDataSearch
                 'store_dynamic.store_id = invalid_sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
             ]
         );
 
         $invalid_sales->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])
             ->select([
-                'date' => 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+                'date' => 'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
                 'shift_type' => 'case WHEN exctract(HOUR from invalid_sales.date) >= 8 AND extract(HOUR from invalid_sales.date) < 20 THEN 1 ELSE 2 END',
                 'cluster_id' => 'store_dynamic.value_int',
                 'store_dynamic_id' => 'store_dynamic.id',
@@ -1201,18 +1200,18 @@ class ChartDataSearch
 
         $invalid_sales->andWhere([
             '>=',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($date_start))
         ]);
 
         $invalid_sales->andWhere([
             '<',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($date_end))
         ]);
 
         $invalid_sales->groupBy([
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
             'CASE WHEN extract(HOUR from invalid_sales.date) >= 8 AND extract(HOUR from invalid_sales.date) < 20 THEN 1 ELSE 2 END',
             'store_dynamic.value_int',
             'store_dynamic.id',
@@ -1230,7 +1229,7 @@ class ChartDataSearch
         $sales_query->andWhere('sales.order_id = \'\'');
 
         $sales_query->addGroupBy([
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'store_dynamic.value_int',
             'store_dynamic.id',
@@ -1264,13 +1263,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = admin_payroll_days.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(admin_payroll_days.date::timestamp, \'YYYY-MM-DD\')')
                 ],
             ]
         );
@@ -1300,7 +1299,7 @@ class ChartDataSearch
         //Продажи
         $sales_query->andWhere([
             'BETWEEN',
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($date_start)),
             date('Y-m-d', strtotime($date_end))
         ]);
@@ -1551,7 +1550,7 @@ class ChartDataSearch
         //region Даты
         // Нужно для соединения составляющих запроса (left join)
         $dates_query = (new Query())->from('(
-                SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -1569,8 +1568,8 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
         //endregion
@@ -1596,7 +1595,7 @@ class ChartDataSearch
         $sales_query = Sales::find();
 
         $sales_query->addSelect([
-            'date' => 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'date' => 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
             'store_id' => 'city_store.id'
@@ -1614,13 +1613,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
             ]
         );
@@ -1641,20 +1640,20 @@ class ChartDataSearch
                 'store_dynamic.store_id = invalid_sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
             ]
         );
 
         $invalid_sales->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])
             ->select([
-                'date' => 'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+                'date' => 'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
                 'cluster_id' => 'store_dynamic.value_int',
                 'store_dynamic_id' => 'store_dynamic.id',
                 'store_id' => 'city_store.id'
@@ -1662,18 +1661,18 @@ class ChartDataSearch
 
         $invalid_sales->andWhere([
             '>=',
-            'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($date_start))
         ]);
 
         $invalid_sales->andWhere([
             '<',
-            'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($date_end))
         ]);
 
         $invalid_sales->groupBy([
-            'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
             'store_dynamic.value_int',
             'store_dynamic.id',
             'city_store.id'
@@ -1690,7 +1689,7 @@ class ChartDataSearch
         $sales_query->andWhere('sales.order_id = \'\'');
 
         $sales_query->addGroupBy([
-            'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             'store_dynamic.value_int',
             'store_dynamic.id',
             'city_store.id'
@@ -1703,7 +1702,7 @@ class ChartDataSearch
         $write_offs_query = WriteOffs::find();
 
         $write_offs_query->addSelect([
-            'date' => 'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')',
+            'date' => 'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
             'store_id' => 'city_store.id'
@@ -1726,13 +1725,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = export_import_table.entity_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')')
                 ],
             ]
         );
@@ -1742,7 +1741,7 @@ class ChartDataSearch
         ]);
 
         $write_offs_query->addGroupBy([
-            'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')',
             'store_dynamic.value_int',
             'store_dynamic.id',
             'city_store.id'
@@ -1756,7 +1755,7 @@ class ChartDataSearch
         //Продажи
         $sales_query->andWhere([
             'BETWEEN',
-            'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($date_start)),
             date('Y-m-d', strtotime($date_end))
         ]);
@@ -1764,7 +1763,7 @@ class ChartDataSearch
         //Списания
         $write_offs_query->andWhere([
             'BETWEEN',
-            'TO_CHAR(write_offs.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(write_offs.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($date_start)),
             date('Y-m-d', strtotime($date_end))
         ]);
@@ -1985,7 +1984,7 @@ class ChartDataSearch
         //region Даты
         // Нужно для соединения составляющих запроса (left join)
         $dates_query = (new Query())->from('(
-                SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -2003,8 +2002,8 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
         //endregion
@@ -2030,7 +2029,7 @@ class ChartDataSearch
         $sales_query = Sales::find();
 
         $sales_query->addSelect([
-            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
@@ -2049,13 +2048,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
             ]
         );
@@ -2065,13 +2064,13 @@ class ChartDataSearch
         $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']);
         $invalid_sales->andWhere([
             '>=',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($date_start))
         ]);
 
         $invalid_sales->andWhere([
             '<=',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime('+1 week', strtotime($date_start)))
         ]);
 
@@ -2084,7 +2083,7 @@ class ChartDataSearch
         $sales_query->andWhere('sales.order_id = \'\'');
 
         $sales_query->addGroupBy([
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'store_dynamic.value_int',
             'store_dynamic.id',
@@ -2099,7 +2098,7 @@ class ChartDataSearch
         //Продажи
         $sales_query->andWhere([
             'BETWEEN',
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($date_start)),
             date('Y-m-d', strtotime($date_end))
         ]);
@@ -2283,7 +2282,7 @@ class ChartDataSearch
         //region Даты
         // Нужно для соединения составляющих запроса (left join)
         $dates_query = (new Query())->from('(
-                SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -2301,8 +2300,8 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
         //endregion
@@ -2328,7 +2327,7 @@ class ChartDataSearch
         $sales_query = Sales::find();
 
         $sales_query->addSelect([
-            'date' => 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'date' => 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
             'store_id' => 'city_store.id'
@@ -2346,13 +2345,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
             ]
         );
@@ -2362,13 +2361,13 @@ class ChartDataSearch
         $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']);
         $invalid_sales->andWhere([
             '>=',
-            'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($date_start))
         ]);
 
         $invalid_sales->andWhere([
             '<=',
-            'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime('+1 week', strtotime($date_start)))
         ]);
 
@@ -2381,7 +2380,7 @@ class ChartDataSearch
         $sales_query->andWhere('sales.order_id = \'\'');
 
         $sales_query->addGroupBy([
-            'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             'store_dynamic.value_int',
             'store_dynamic.id',
             'city_store.id'
@@ -2395,7 +2394,7 @@ class ChartDataSearch
         //Продажи
         $sales_query->andWhere([
             'BETWEEN',
-            'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($date_start)),
             date('Y-m-d', strtotime($date_end))
         ]);
@@ -2566,7 +2565,7 @@ class ChartDataSearch
         //region Даты
         // Нужно для соединения составляющих запроса (left join)
         $dates_query = (new Query())->from('(
-                SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -2584,8 +2583,8 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
         //endregion
@@ -2609,7 +2608,7 @@ class ChartDataSearch
         $matrix_query = Sales::find();
 
         $matrix_query->addSelect([
-            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'date' => 'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             'shift_type' => 'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
@@ -2628,13 +2627,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END')
                 ],
             ]
         );
@@ -2644,13 +2643,13 @@ class ChartDataSearch
         $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']);
         $invalid_sales->andWhere([
             '>=',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime($date_start))
         ]);
 
         $invalid_sales->andWhere([
             '<=',
-            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from invalid_sales.date) < 8 THEN TO_CHAR(invalid_sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\') END',
             date('Y-m-d', strtotime('+1 week', strtotime($date_start)))
         ]);
         /* Конец проверки продажи */
@@ -2664,7 +2663,7 @@ class ChartDataSearch
         $matrix_query->andWhere(['NOT IN', 'sales.id', $invalid_sales]);
 
         $matrix_query->addGroupBy([
-            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+            'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
             'CASE WHEN extract(HOUR from sales.date) >= 8 AND extract(HOUR from sales.date) < 20 THEN 1 ELSE 2 END',
             'store_dynamic.value_int',
             'store_dynamic.id',
@@ -2675,12 +2674,12 @@ class ChartDataSearch
             'AND',
             [
                 '>=',
-                'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+                'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
                 date('Y-m-d', strtotime($date_start))
             ],
             [
                 '<=',
-                'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'%Y-%m-%d\') ELSE TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\') END',
+                'CASE WHEN extract(HOUR from sales.date) < 8 THEN TO_CHAR(sales.date - INTERVAL \'1 DAY\', \'YYYY-MM-DD\') ELSE TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\') END',
                 date('Y-m-d', strtotime($date_end))
             ]
         ]);
@@ -2887,7 +2886,7 @@ class ChartDataSearch
         //region Даты
         // Нужно для соединения составляющих запроса (left join)
         $dates_query = (new Query())->from('(
-                SELECT :date_end - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\' AS date
+                SELECT TO_CHAR(date (:date_end) - (units.mul + (10 * tens.mul) + (100 * hundreds.mul) + (1000 * thousands.mul)) * INTERVAL \'1 DAY\', \'YYYY-MM-DD\') AS date
                 FROM       (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS units
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS tens
                 CROSS JOIN (SELECT 0 AS mul UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS hundreds
@@ -2905,8 +2904,8 @@ class ChartDataSearch
             [
                 'BETWEEN',
                 'dates_column.date',
-                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
+                new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
             ]
         );
         //endregion
@@ -2930,7 +2929,7 @@ class ChartDataSearch
         $matrix_query = Sales::find();
 
         $matrix_query->addSelect([
-            'date' => 'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'date' => 'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             'cluster_id' => 'store_dynamic.value_int',
             'store_dynamic_id' => 'store_dynamic.id',
             'store_id' => 'city_store.id'
@@ -2948,13 +2947,13 @@ class ChartDataSearch
                 'store_dynamic.store_id = sales.store_id',
                 [
                     '<=',
-                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_from::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
                 [
                     '>',
-                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'%Y-%m-%d\')'),
-                    new Expression('TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')')
+                    new Expression('TO_CHAR(store_dynamic.date_to::timestamp, \'YYYY-MM-DD\')'),
+                    new Expression('TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')')
                 ],
             ]
         );
@@ -2964,13 +2963,13 @@ class ChartDataSearch
         $invalid_sales = Sales::find()->alias('invalid_sales')->andWhere(['invalid_sales.operation' => Sales::OPERATION_RETURN])->select(['check_id' => 'invalid_sales.sales_check']);
         $invalid_sales->andWhere([
             '>=',
-            'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime($date_start))
         ]);
 
         $invalid_sales->andWhere([
             '<=',
-            'TO_CHAR(invalid_sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(invalid_sales.date::timestamp, \'YYYY-MM-DD\')',
             date('Y-m-d', strtotime('+1 week', strtotime($date_start)))
         ]);
         /* Конец проверки продажи */
@@ -2984,7 +2983,7 @@ class ChartDataSearch
         $matrix_query->andWhere(['NOT IN', 'sales.id', $invalid_sales]);
 
         $matrix_query->addGroupBy([
-            'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+            'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
             'store_dynamic.value_int',
             'store_dynamic.id',
             'city_store.id'
@@ -2994,12 +2993,12 @@ class ChartDataSearch
             'AND',
             [
                 '>=',
-                'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+                'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
                 date('Y-m-d', strtotime($date_start))
             ],
             [
                 '<=',
-                'TO_CHAR(sales.date::timestamp, \'%Y-%m-%d\')',
+                'TO_CHAR(sales.date::timestamp, \'YYYY-MM-DD\')',
                 date('Y-m-d', strtotime($date_end))
             ]
         ]);