The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Как реализовать переменную $date в bash скрипте, !*! madmax11, 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;

  • Как реализовать переменную $date в bash скрипте, !*! phpcoder, 08:47 , 10-Фев-11 (1)
    > Уважаемые знатоки 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 такое точно возможно.

    • Как реализовать переменную $date в bash скрипте, !*! madmax11, 08:55 , 10-Фев-11 (2)
      >[оверквотинг удален]
      >> крон по понедельникам, ломаю голову как сделать чтобы каждую неделю в
      >> переменной "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 к сожалению пока вариантов не вижу, но погуглю, спасибо за совет.


      • Как реализовать переменную $date в bash скрипте, !*! phpcoder, 09:06 , 10-Фев-11 (3)
        > Да, но ведь еще нужно инсертить эти данные в "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...


        • Как реализовать переменную $date в bash скрипте, !*! madmax11, 09:30 , 10-Фев-11 (4)
          >[оверквотинг удален]
          >> нужные данные в две одинаковых "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 дней.

          • Как реализовать переменную $date в bash скрипте, !*! phpcoder, 09:44 , 10-Фев-11 (5)
            > сделать так, чтобы каждую неделю они возрастали по числам на 7 дней.

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


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

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

              • Как реализовать переменную $date в bash скрипте, !*! madmax11, 14:12 , 10-Фев-11 (7)
                >>> сделать так, чтобы каждую неделю они возрастали по числам на 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(), помогите советом, весь мосг себе изломал=(  


                • Как реализовать переменную $date в bash скрипте, !*! phpcoder, 14:24 , 10-Фев-11 (8)
                  > 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 :( Почитайте что-нибудь по этой теме, либо, на худой конец, поищите примеры работы с датой и временем в гугле.

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

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

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





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

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