mysql: Как сгрупировать по периоду?

12 3
N0
На сайте с 12.11.2007
Offline
45
1345

Есть таблица в которой дата сохраняется в таком формате:

день час

20091022 2009102200

20091022 2009102201

20091022 2009102202

.....

20091022 2009102223

Используется такой запрос:

SELECT * where <условие> FROM <таблица> where hour between '2009102200' and '2009102223' group by day

но у сервера есть свой timezone;

нужно сделать выборку в локальном времени, сгрупировать вывод по дням

например, если у пользователя разница с сервером 1 час, для этого пользователя используется уже запрос со

смещением:

SELECT * where <условие> FROM <таблица> where hour between '2009102201' and '2009102301' group by day

20091022 2009102201

20091022 2009102202

20091022 2009102203

....

20091123 2009102301

Но - группируется по дням неправильно , выделенное красным будет сгрупировано в след. день

Пластиковые окна Москва (http://vse-plastikovie-okna.ru) Стеклопакеты Москва (http://e-steklopaketi.ru)
malls
На сайте с 08.08.2005
Offline
255
#1

Ну учитывая что мускуль не может знать какая timezone у клиента, логично предположить, что в условие between, нужно загонять уже даты скорректированные относительно клиентской timezone...

N0
На сайте с 12.11.2007
Offline
45
#2

условие в between и так скорректировано, смотрите выше

проблема в group by..

malls
На сайте с 08.08.2005
Offline
255
#3

проблема вообще не понятна, ибо само высказывание что:

nat000:
но у сервера есть свой timezone

ставит в тупик...

Ибо при чем здесь любые зоны, если речь идет о записях в базе данных?

nat000:

20091022 2009102203
....

20091123 2009102301

Но - группируется по дням неправильно , выделенное красным будет сгрупировано в след. день

Если кстати Вас это удивляет - нужно бросать эту работу...

N0
На сайте с 12.11.2007
Offline
45
#4

Меня не удивляет) результат правильный,

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

Вопрос в том, возможно ли это сделать с помощью group by

Например, сгрупировать по дням +1 час

К серверу претензий нет

Надеюсь теперь понятно написано..

malls
На сайте с 08.08.2005
Offline
255
#5

Щас ругаться начну...

Вы издеваетесь или правда тупите так сильно?

Что вы в качестве условия для between задали - то мускуль и выдает!!!!!

Других вариантов быть не может...

Чтобы он выдавал результаты с учетом смещения, нужно это смещение уже само по себе в between запихать - что непонятно????

Т.е. "пАлюбАсу" встает вопрос обработки запроса из вне, а именно получение зоны клиента и соответствующая корректировка самого запроса...

N0
На сайте с 12.11.2007
Offline
45
#6

Смещение УЖЕ УЧТЕНО в between

прочитайте внимательно первый пост

вопрос - как сгрупировать

malls
На сайте с 08.08.2005
Offline
255
#7

Теперь и до меня дошло... (Жирафам привет)

group by позволяет условия...

т.е. как то надо туда запихать, что-то типа: group by day+TIME_OFFSET

N0
На сайте с 12.11.2007
Offline
45
#8

да, именно так

вопрос в том, как это сделать 😕

Абстрагируясь от моего примера

Как сгрупировать данные таблицы по такому периоду:

22-10-2009 1:00 - 23-10-2009 1:00

23-10-2009 1:00 - 24-10-2009 1:00

24-10-2009 1:00 - 25-10-2009 1:00

....

malls
На сайте с 08.08.2005
Offline
255
#9
nat000:
Как сгрупировать данные таблицы по такому периоду

С помощью программирования!

N0
На сайте с 12.11.2007
Offline
45
#10

Тоесть одной mysql командой не получится, группировать с помощью php?

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий