The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как реализовать переменную $date в bash скрипте"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Как реализовать переменную $date в bash скрипте"  +/
Сообщение от madmax11 email(ok) on 10-Фев-11, 08:21 
Уважаемые знатоки perl, встала задача вытаскивать определенные данные из таблиц mysql еженедельно по понедельникам, было решено написать bash скрипт и засунуть его в крон по понедельникам, ломаю голову как сделать чтобы каждую неделю в переменной "and time>=" менялось значение за предыдущую неделю, была идея выводить командой date, но вот как высчитать описание недели?
Пример запроса:

select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1 or locate('***',***)=1) and time>='2010-12-20 00:00:00' and time<'2010-12-27 00:00:00' group by *,* order by time;

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от phpcoder email(ok) on 10-Фев-11, 08:47 
> Уважаемые знатоки perl, встала задача вытаскивать определенные данные из таблиц mysql еженедельно
> по понедельникам, было решено написать bash скрипт и засунуть его в
> крон по понедельникам, ломаю голову как сделать чтобы каждую неделю в
> переменной "and time>=" менялось значение за предыдущую неделю, была идея выводить
> командой date, но вот как высчитать описание недели?
> Пример запроса:
> select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1 or locate('***',***)=1)
> and time>='2010-12-20 00:00:00' and time<'2010-12-27 00:00:00' group by *,* order by
> time;

date -d 'week ago' попробуйте (поищите примеры в info date, кажется), но я бы лучше воспользовался функциями вашей СУБД. Во всяком случае, в MySQL такое точно возможно.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от madmax11 email(ok) on 10-Фев-11, 08:55 
>[оверквотинг удален]
>> крон по понедельникам, ломаю голову как сделать чтобы каждую неделю в
>> переменной "and time>=" менялось значение за предыдущую неделю, была идея выводить
>> командой date, но вот как высчитать описание недели?
>> Пример запроса:
>> select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1 or locate('***',***)=1)
>> and time>='2010-12-20 00:00:00' and time<'2010-12-27 00:00:00' group by *,* order by
>> time;
> date -d 'week ago' попробуйте (поищите примеры в info date, кажется), но
> я бы лучше воспользовался функциями вашей СУБД. Во всяком случае, в
> MySQL такое точно возможно.

Да, но ведь еще нужно инсертить эти данные в "and time>=" и причем "and time>=" две штуки, описывающие неделю, как же именно проинсертить нужные данные в две одинаковых "and time>=", по поводу mysql к сожалению пока вариантов не вижу, но погуглю, спасибо за совет.


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от phpcoder email(ok) on 10-Фев-11, 09:06 
> Да, но ведь еще нужно инсертить эти данные в "and time>=" и
> причем "and time>=" две штуки, описывающие неделю, как же именно проинсертить
> нужные данные в две одинаковых "and time>=",

Не понял вас. Вы не знаете как результат команды вставить в переменную в шелле? Что не получается или не понятно?

printf "select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1 or locate('***',***)=1) and time>='%s' and time<'%s' group by *,* order by time;" "$(date -d 'week ago' '+%F 00:00:00')" "$(date '+%F 00:00:00')" | mysql -u user -ppassword database -h host

> по поводу mysql к
> сожалению пока вариантов не вижу, но погуглю, спасибо за совет.

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functio...


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от madmax11 email(ok) on 10-Фев-11, 09:30 
>[оверквотинг удален]
>> нужные данные в две одинаковых "and time>=",
> Не понял вас. Вы не знаете как результат команды вставить в переменную
> в шелле? Что не получается или не понятно?
> printf "select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1
> or locate('***',***)=1) and time>='%s' and time<'%s' group by *,* order by
> time;" "$(date -d 'week ago' '+%F 00:00:00')" "$(date '+%F 00:00:00')" |
> mysql -u user -ppassword database -h host
>> по поводу mysql к
>> сожалению пока вариантов не вижу, но погуглю, спасибо за совет.
> http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functio...

Мне непонятно как в строку запроса в bash скрипте к мускулю типа select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1 or locate('***',***)=1) and time>='2010-12-20 00:00:00' and time<'2010-12-27 00:00:00' group by *,* order by time; в двух параметрах and time>='2010-12-20 00:00:00' and time<'2010-12-27 00:00:00 описывающих неделю, сделать так, чтобы каждую неделю они возрастали по числам на 7 дней.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от phpcoder email(ok) on 10-Фев-11, 09:44 
> сделать так, чтобы каждую неделю они возрастали по числам на 7 дней.

Используйте текущую дату (NOW(), CURDATE()) как точку отсчета.


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от madmax11 email(ok) on 10-Фев-11, 09:54 
>> сделать так, чтобы каждую неделю они возрастали по числам на 7 дней.
> Используйте текущую дату (NOW(), CURDATE()) как точку отсчета.

Большое спасибо за советы, ответ нашел здесь=) http://www.opennet.dev/openforum/vsluhforumID9/8991.html

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от madmax11 email(ok) on 10-Фев-11, 14:12 
>>> сделать так, чтобы каждую неделю они возрастали по числам на 7 дней.
>> Используйте текущую дату (NOW(), CURDATE()) как точку отсчета.

И все же, проблема до конца не решилась, в целом в запросе к мускулю добился заполнения текущей даты в запросе, получилось примерно следующее:

select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1 or locate('***',***)=1) and time>='2010-12-20 00:00:00' and time<'СURDATE() 00:00:00' group by *,* order by time;  то есть я добился результата по текущей дате, но вот как быть со первым значением  and time>='2010-12-20 оно должно уменьшаться ровно на семь дней от CURDATE(), помогите советом, весь мосг себе изломал=(  


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от phpcoder email(ok) on 10-Фев-11, 14:24 
> select day(time),hour(time), sum(msg_len) from info where (locate('***',***)=1 or locate('***',***)=1)
> and time>='2010-12-20 00:00:00' and time<'СURDATE() 00:00:00' group by *,* order by
> time;  то есть я добился результата по текущей дате, но
> вот как быть со первым значением  and time>='2010-12-20 оно должно
> уменьшаться ровно на семь дней от CURDATE(), помогите советом, весь мосг
> себе изломал=(

На лицо незнание SQL :( Почитайте что-нибудь по этой теме, либо, на худой конец, поищите примеры работы с датой и временем в гугле.

Я могу вам подсказать, но не буду потому что делать за вас у меня нет времени, объяснять тоже. Вы либо должны сами разобраться, либо обратитесь к более квалифицированному программисту/администратору. (Есть ещё вариант подождать других участников форума, которые дадут вам ответ "на тарелочке с голубой каёмочкой".)

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Как реализовать переменную $date в bash скрипте"  +/
Сообщение от madmax11 email(ok) on 10-Фев-11, 15:03 
>[оверквотинг удален]
>> вот как быть со первым значением  and time>='2010-12-20 оно должно
>> уменьшаться ровно на семь дней от CURDATE(), помогите советом, весь мосг
>> себе изломал=(
> На лицо незнание SQL :( Почитайте что-нибудь по этой теме, либо, на
> худой конец, поищите примеры работы с датой и временем в гугле.
> Я могу вам подсказать, но не буду потому что делать за вас
> у меня нет времени, объяснять тоже. Вы либо должны сами разобраться,
> либо обратитесь к более квалифицированному программисту/администратору. (Есть ещё вариант
> подождать других участников форума, которые дадут вам ответ "на тарелочке с
> голубой каёмочкой".)

Да, не спорю, у меня нету знаний в области баз данных, поскольку это не совсем моя работа, просто в данный момент возникла необходимость решить вопрос, а кроме меня как бы некому, в общем вы дали мне намек на счет функций mysql, а я уже закончил=) при помощи DATE_SUB(CURDATE(), INTERVAL 7 DAY) в первом случае, и DATE_SUB(NOW(), interval 1 day) во втором случае, Спасибо за помоЩь=))


Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру