|
|
|
Перебрать данные
|
|||
|---|---|---|---|
|
#18+
Привет всем! Есть некоторый запрос к базе данных, который подразумевает выгрузку данных за определенный промежуток времени (неделя). Сейчас пока этот промежуток фиксированный. Но для формирования отчета нужно выгружать данные по каждой неделе из определенного промежутка времени. Сам промежуток времени лежит в табличке parameters (hist_from_dt - hist_to_dt): Код: sql 1. 2. 3. 4. 5. Мне нужно набирать недели от hist_from_dt и выгружать данные за промежутки по 7 дней, пока не дойду до hist_to_dt - как это можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 13:26:37 |
|
||
|
Перебрать данные
|
|||
|---|---|---|---|
|
#18+
Понятно, что нужно использовать цикл.. Вот только как работать с таким вот форматом даты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 13:42:07 |
|
||
|
Перебрать данные
|
|||
|---|---|---|---|
|
#18+
Стас0нПонятно, что нужно использовать цикл.. Вот только как работать с таким вот форматом даты? вопервых вооружиться клиентом для субд и не бояться выполнять точечные действия в субд ,чтоб вообще видеть - работает, или нет и как.... Код: sql 1. 2. 3. 4. 5. во вторых не бояться.... всмысле сложной задачи. если бы у тебя было не старт конец, а набор нач 1 недели - кон1 недели нач 2 недели - кон 2 недели ты бы смог сделать? а если задаться вопросом. а можно ли както из даты выковырять номер недели в году скажем ну или ваще что можно из даты выковыривать штатно... push тынц дальше думаем.. но у нас начало и конец периода...как бы нам получить список недель... Но для формирования отчета нужно выгружать данные по каждой неделе из определенного промежутка времени. Сам промежуток времени лежит в табличке parameters (hist_from_dt - hist_to_dt): ооо, так нам вообщемто не надо список недель, нам надо взять данные за период с по, но разбить процес по недельно... хм.. а как можно разбить даты (скажем 100 штук) на "понедельно", если мы потыцали линки :):) ЗЫ я по твоим постам смотрю, что ты почти сам подходишь к решению(исходя из формулировки задачи, а то ведь есть люди что забегают и долго у них надо выяснять что им надо :) ) но как мне кажется, ждёшь что решение возникнет в голове... :) так редко бывает...надо пробывать, разбивать задачу на меленькие шашки... вообщем пиши если вопрос останеться, особенно после второй ссылки и последней мысли .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 14:10:14 |
|
||
|
Перебрать данные
|
|||
|---|---|---|---|
|
#18+
спасибо, вот накатал такую штуку: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Однако постоянно падает в строчке с while. Такое ощущение, что я сделал неправильное сравнение дат, но где-то в интернете находил такие примеры.. что может быть не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 15:51:55 |
|
||
|
Перебрать данные
|
|||
|---|---|---|---|
|
#18+
Стас0н, Точки с запятой не мешало бы поставить. а я иммел ввиду спомощью функций для дат из столбика в ЗАПРОС (сам запрос + добавление данных в csv, вот там где столбик с датой, получать три столбика дата, год, номер недели. и вот отсортировав по номергод+номернедели, получиш разбиение понедельное. и потом перебирая масив результата, сомтришь, когда эти значения изменились, началась новая неделя, пишешь в новый сцс файл. если же надо ввиде серии независимых запросов, то 1)получаем дату страта, и номер дня в неделе. 2)получаем дату начала недели на которую попадает дата старта 3)получаем номер недели даты конца, и аналогично дату конца последней недели потом циклом делаем выборку из начал_дата_шага2 ----начал_дата_шага2 + интервал 7 дней на каждой итерации цикла проверяем, не получаеться ли что мы уже вышли за ограничение на шаге3 полученное. ======== вообщем 1)выборка одним махом, с сортировкой по год+номернеделивгоду 2) из дата_старт дата_финиш получить дата_начала_недели_даты_старт и дата_конца_недели_даты_финиш текущая = дата_начала_недели_даты_старт ПОКА текущая +7 дней МЕНЬШЕ_ИЛИ_РАВНО дата_конца_недели_даты_финиш ДЕЛАТЬ выборку из базы из диапазона дат МАКС(текущая,дата_старт) --- МИН(текущая + 7 дней, дата_финиш) ЗЫ полагаю понятно почему макс / мин стоят скажем дата старта 2014-09-24 тогда дата_начала_недели_даты_старт 2014-09-22 но выборку из базы надо делать всёравно с 24 :) аналогично с другой границей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2014, 21:31:38 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38756128&tid=1834185]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 319ms |

| 0 / 0 |
