Вывод даты в соответствии с текущим годом ...

hoting

Новичок
Друзья привет, никак не получается придумать, как сделать так чтоб при подсчете суммы, скрипт считал только нужный месяц ...
Итак, у нас есть база, в нее заносятся заказы, есть табличка которая все это считает по месяцам, т.е. колонка ИТОГО за месяц, но вот вопрос, а если у нас идет перескок на следующий год, то при подсчете по параметру month он будет захватывать значения от предыдущего года ... кто что может предложить?

для наглядности код с подсчетом
Код:
$querysummmonth = mysql_query("SELECT SUM(price) AS price FROM kamerazakaz WHERE MONTH(data_out) = '$month'");   
            $datasummmonth = mysql_fetch_array($querysummmonth);
            
        echo number_format($datasummmonth['price'], 2, ',', ' ');
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Добавь в выборку условие, что ты работаешь с таким-то там годом.

AND YEAR(date_out) = '2016'
 

fixxxer

К.О.
Партнер клуба
Если на поле date_out есть индекс (или его добавление уместно), стоит вычислить первый и последний день месяца (см. strtotime) и формировать запрос вида date_out between '$firstDay 00:00:00' and '$lastDay 23:59:59'. С month()/year() индекс использоваться не будет.
 

hoting

Новичок
Добавь в выборку условие, что ты работаешь с таким-то там годом.

AND YEAR(date_out) = '2016'
Я так поначалу и думал, но
1. Задача стоит чтоб пока выдавать данные непрерывно, т.е. таблица может формироваться и 2 и 3 года, просто пока это 4 месяца ...
2. А как быть с переходом 1 января? опять менять? тогда в выборку не попадут даты до 31.12

Если на поле date_out есть индекс (или его добавление уместно), стоит вычислить первый и последний день месяца (см. strtotime) и формировать запрос вида date_out between '$firstDay 00:00:00' and '$lastDay 23:59:59'. С month()/year() индекс использоваться не будет.
Не совсем понял решения, можно подробней!
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
как сделать так чтоб при подсчете суммы, скрипт считал только нужный месяц
Вы уж определитесь, или крестик снимите, или ...

Так месяц, диапазон дат, или вообще что? Если месяц, то его дата дачала и конца всегда четко определена и тут нужно решение от @fixxxer
 

hoting

Новичок
Вы уж определитесь, или крестик снимите, или ...

Так месяц, диапазон дат, или вообще что? Если месяц, то его дата дачала и конца всегда четко определена и тут нужно решение от @fixxxer
Я его и прошу рассказать подробней :)
общая таблица должна быть непрерывной т.е.
январь 2017
декабрь 2016
.....
.....
январь 2016
декабрь 2015 ...
Проблема именно в переходах от года к году, если сделать запрос только по месяцу, то он будет брать месц и в 2015 и в 2016 и 2017 и их суммировать, т.е. данные будут не верные! я и прошу, может кто нибудь сталкивался с такой задачей, да уж точно сталкивался, не такая уж она необычная :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@hoting, сумму считаешь с группировкой по месяцу и году одновременно.
 

fixxxer

К.О.
Партнер клуба
select date_format(timestamp,'%Y-%m') as year_and_month, sum(price) as price
from table
group by year_and_month order by year_and_month

так, правда, будут дырки, если за какой-то месяц нет ничего
 
Сверху