Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: GROUP BY MONTH() с учетом timeZone
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » GROUP BY MONTH() с учетом timeZone

Страниц (1): [1]
 

1. RomAndry - 18 Ноября, 2013 - 16:30:58 - перейти к сообщению
Приветствую.
Вот возникла ситуация:
делаю выборку за период
2013-04-01 00:00:00
2013-04-30 23:59:59
(на сервере UTC)
С учетом таймзоны, выборка идет со смещением +4, т.е.
2013-04-01 04:00:00
2013-05-01 03:59:59

а сам запрос мне нужно сгруппировать по-месячно

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT id,name, MONTH(date)
  3. FROM TABLE
  4. WHERE date>='2013-04-01 04:00:00' AND date <= '2013-05-01 03:59:59'
  5. GROUP BY MONTH(date)
  6.  

естественно необходимо получить только АПРЕЛЬ (согласно первоначальных параметров)
а выдает 2 строки... АПРЕЛЬ и МАЙ

как правильно составить запрос?
пробовал с помощью CONVERT_TZ()

PHP:
скопировать код в буфер обмена
  1. GROUP BY MONTH(DATE(CONVERT_TZ(date, '+00:00', '".$offset."')))"


но не получается.

Буду благодарен за любую информацию.
ЗЫ не предлагайте просуммировать в цикле и выдать как 1 строку =)
2. RomAndry - 18 Ноября, 2013 - 22:49:01 - перейти к сообщению
решил с помощью
timezone_offset_get
всетаки с помощью обратного смещения времени
PHP:
скопировать код в буфер обмена
  1.  
  2. GROUP BY MONTH(DATE(CONVERT_TZ(date, '+00:00', '-04:00')))"
  3.  

правда такой метод не учитывает переход на летне зимнее время

 

Powered by ExBB FM 1.0 RC1