билинг, месяца, годы и т.д. perl
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
билинг, месяца, годы и т.д. perl
товарищи!
как сделать билиннг, есть задача: сейчас 15:00:45, 05.05.2220
что бы вывести за текущий день нужно 15:00:45 перевести в секунды и просто отнять назад с отношении с текущими секундами... ну и вы высти трафик и т.д.
тоже самое за неделю, и допустим за год...
а как вывести за месяц? как узнать сколько дней в этом месяце? и получаеться что в октябре бывает 29 и 28 дней, а как тут определить сколько дней?? нужно в структурные данные (пример масив) создать календариь на пару годов в перед календарь?
какой алгоритм сделать, можеть модуль есть?
http://search.cpan.org/search?query=calendar&mode=all
а как наш календарь называеться христианский?
как сделать билиннг, есть задача: сейчас 15:00:45, 05.05.2220
что бы вывести за текущий день нужно 15:00:45 перевести в секунды и просто отнять назад с отношении с текущими секундами... ну и вы высти трафик и т.д.
тоже самое за неделю, и допустим за год...
а как вывести за месяц? как узнать сколько дней в этом месяце? и получаеться что в октябре бывает 29 и 28 дней, а как тут определить сколько дней?? нужно в структурные данные (пример масив) создать календариь на пару годов в перед календарь?
какой алгоритм сделать, можеть модуль есть?
http://search.cpan.org/search?query=calendar&mode=all
а как наш календарь называеться христианский?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
http://search.cpan.org/~roode/Time-Form ... /Format.pm
http://search.cpan.org/~roode/Regexp-Co ... on/time.pm
http://search.cpan.org/~roode/Regexp-Co ... on/time.pm
Z301171463546 - можно пожертвовать мне денег
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
что не получаеться найти...
можно сюда тыкнуть?
у меня есть 05.05.2220 15:00:45 как мне узнать сколько это ушло секунд за прошлый месяц и по запрошлый??
или как узнать сколько дней (секунады надо) в прошлом месяцу в 05.04.2220 ??
или тут элементарно? что-то понять не могу

можно сюда тыкнуть?
у меня есть 05.05.2220 15:00:45 как мне узнать сколько это ушло секунд за прошлый месяц и по запрошлый??
или как узнать сколько дней (секунады надо) в прошлом месяцу в 05.04.2220 ??
или тут элементарно? что-то понять не могу


- zingel
- beastie
- Сообщения: 6204
- Зарегистрирован: 2007-10-30 3:56:49
- Откуда: Moscow
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
Вашими устами только ТЗ и ставить...у меня есть 05.05.2220 15:00:45 как мне узнать сколько это ушло секунд за прошлый месяц и по запрошлый??
я немогу понять, что в итоге должно получится? Цель* ?
Z301171463546 - можно пожертвовать мне денег
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
нужно вынести трафик за 04.2220 месяц
то есть: послать запрос в mysql в диапазоне в секундах...
(сори если плохо вопрос сформулирован)
тут надо
и буду секунды до 2003/06/05 года потом отсчитать до 2003/07/05 
то есть: послать запрос в mysql в диапазоне в секундах...
(сори если плохо вопрос сформулирован)
тут надо
Код: Выделить всё
$time{'yyyy/mm/dd hh:mm:ss.mmm'} 2003/06/05 13:02:14.171

- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
правильнее будет наверное так:
узнаю сколько секунд в это дате 2220.04.01 00:00:00
узнаю сколько секунд в это дате 2220.05.01 00:00:00
и потом посылаю запрос в базу в секндах в диапазоне с 2220.04.01 00:00:00 до 2220.05.01 00:00:00, и это будет месяц 2220.04.01
запутался просто, решено

узнаю сколько секунд в это дате 2220.04.01 00:00:00
узнаю сколько секунд в это дате 2220.05.01 00:00:00
и потом посылаю запрос в базу в секндах в диапазоне с 2220.04.01 00:00:00 до 2220.05.01 00:00:00, и это будет месяц 2220.04.01
запутался просто, решено



-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: билинг, месяца, годы и т.д. perl
правильней использовать date и timestamp для хранения полей даты и времениProFTP писал(а):правильнее будет наверное так:
ProFTP писал(а):и потом посылаю запрос в базу в секндах в диапазоне с 2220.04.01 00:00:00 до 2220.05.01 00:00:00, и это будет месяц 2220.04.01

Код: Выделить всё
SELECT udate, SUM(bytes) FROM `traffic` WHERE udate BETWEEN "2008-01-01" AND "2008-01-30" GROUP BY udate
-- и так тоже можно, если база мелкая
SELECT udate, SUM(bytes) FROM `traffic` WHERE udate LIKE "2008-01%" GROUP BY udate
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
может быть так:
а как я узнаю сколько дней в этом месяце 2008-01-* , чтобы календарь не строить?
получаеться так...
перевести в секунды не проблема, но как правильно делать не знаю, примеров нету, делаю как получиться...
UPD: не увидел сразу, тогда так подойдет:
это в гугле это находил не однократно
Код: Выделить всё
]BETWEEN "2008-01-01" AND "2008-02-01" GROUP BY udate
получаеться так...
перевести в секунды не проблема, но как правильно делать не знаю, примеров нету, делаю как получиться...

UPD: не увидел сразу, тогда так подойдет:
Код: Выделить всё
SELECT udate, SUM(bytes) FROM `traffic` WHERE udate LIKE "2008-01%" GROUP BY udate
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: билинг, месяца, годы и т.д. perl
секнд
часов
дней
Код: Выделить всё
mysql> select UNIX_TIMESTAMP('2008-06-01 00:00:00')-UNIX_TIMESTAMP('2008-05-01 00:00:00');
+-----------------------------------------------------------------------------+
| UNIX_TIMESTAMP('2008-06-01 00:00:00')-UNIX_TIMESTAMP('2008-05-01 00:00:00') |
+-----------------------------------------------------------------------------+
| 2678400 |
+-----------------------------------------------------------------------------+
1 row in set (0.00 sec)
Код: Выделить всё
mysql> select (UNIX_TIMESTAMP('2008-06-01 00:00:00')-UNIX_TIMESTAMP('2008-05-01 00:00:00'))/3600;
+------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2008-06-01 00:00:00')-UNIX_TIMESTAMP('2008-05-01 00:00:00'))/3600 |
+------------------------------------------------------------------------------------+
| 744.0000 |
+------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Код: Выделить всё
mysql> select (UNIX_TIMESTAMP('2008-06-01 00:00:00')-UNIX_TIMESTAMP('2008-05-01 00:00:00'))/3600/24;
+---------------------------------------------------------------------------------------+
| (UNIX_TIMESTAMP('2008-06-01 00:00:00')-UNIX_TIMESTAMP('2008-05-01 00:00:00'))/3600/24 |
+---------------------------------------------------------------------------------------+
| 31.00000000 |
+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: билинг, месяца, годы и т.д. perl
эххх молодёжProFTP писал(а):а как я узнаю сколько дней в этом месяце 2008-01-* , чтобы календарь не строить?
получаеться так...

Код: Выделить всё
SELECT @fday:=DATE_FORMAT(NOW(), "%Y-%m-01") , DATE_FORMAT( DATE_SUB( DATE_ADD( @fday, INTERVAL 1 MONTH ), INTERVAL 1 DAY ), "%Y-%m-%d" );
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: билинг, месяца, годы и т.д. perl
моё элегантнее 

В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: билинг, месяца, годы и т.д. perl
у тебя промежуточное значение, у меня конечноеhizel писал(а):моё элегантнее


- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
Код: Выделить всё
select '2007-06-01' + INTERVAL 1 MONTH;
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: билинг, месяца, годы и т.д. perl
dikens3 писал(а):http://forum.lissyara.su/viewtopic.php?f=11&t=4004


ну можно и так
Код: Выделить всё
SELECT @fday:=DATE_FORMAT(NOW(), '%Y-%m-01') first, @lday:=@fday + INTERVAL 1 MONTH - INTERVAL 1 DAY last

- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
кто ставил этот модуль Time::Format в какой пакет он входит, его найти не могу...
Всем спасибо
теперь как вывести все месяца для конкретного пользователя, например от 2005.05.05 до 2008.07.24 (до текущего времени)
что я хочу сделать:
1) вывести все месяца от регистрации пользователя до текущей даты
2) сразу подсчитать за каждый месяц трафик
3) сделать кликабельные ссылки, после клика на месяц чтобы вывелись все дни месяца (как вывести месяца, ну и опрелить дни?)
4) после нажатия на день, чтобы вывелась подробная статистика
я решил хранить в секундах дату (можно срзу конвектировать и в обычную)
не понимаю как вывести все месяца от 2005.05.05 до 2008.07.24 и отпределить сколько в каждой месяце дней
тут нашел вариант:
вывести всю дату из стобиков в память, дальше удулить повторяющиеся строки чтобы остались только месяца (но это займет ОЧЕНЬ МНОГО времени всё выносить) елси бы диапазоны построить... подскжаите как сделать надо?
Всем спасибо
теперь как вывести все месяца для конкретного пользователя, например от 2005.05.05 до 2008.07.24 (до текущего времени)
что я хочу сделать:
1) вывести все месяца от регистрации пользователя до текущей даты
2) сразу подсчитать за каждый месяц трафик
3) сделать кликабельные ссылки, после клика на месяц чтобы вывелись все дни месяца (как вывести месяца, ну и опрелить дни?)
4) после нажатия на день, чтобы вывелась подробная статистика
я решил хранить в секундах дату (можно срзу конвектировать и в обычную)
не понимаю как вывести все месяца от 2005.05.05 до 2008.07.24 и отпределить сколько в каждой месяце дней
тут нашел вариант:
вывести всю дату из стобиков в память, дальше удулить повторяющиеся строки чтобы остались только месяца (но это займет ОЧЕНЬ МНОГО времени всё выносить) елси бы диапазоны построить... подскжаите как сделать надо?
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: билинг, месяца, годы и т.д. perl
обратите внимание на модуль DateTime, там по моему есть все что только может понадобится для оперирования датой\временем
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
Код: Выделить всё
Module Version: 0.01 Source
* NAME
* SYNOPSIS
* DESCRIPTION
* IMPLEMENTATION
* SUBCLASSING
* AUTHOR
NAME ^
Date::Time - Lightweight normalised datetime data type
SYNOPSIS ^
This is just some suggestions, as nothing is implemented yet. I'm open to critisism. Anyway I don't know if the original name will fit this module with all my plans....
use Date::Time;
my $date=Date::Time->new();
# Set date
$date->set; # Set to current time
$date->set(time-60); # Set to 'one minute ago'
my $greg=Date::Time::Gregorian->new();
$greg->parse(source=>'Fri Mar 3 01:20:54 CET 2000');
$greg->parse(source=>'one month ago', format=>'unknown');
$greg->set(localtime, {timezone=>'local'});
$greg->set(gmtime);
my $db_time=new Date::Time::MySQLTimeStamp;
$db_time->set(200003031859);
# Output date and date elements
print $db_time->Gregorian->as_string;
print $db_time->Gregorian->year;
print $db_time->Gregorian->strftime('%A');
# The month operator here will return a Date::Gregorian::Month object.
print $db_time->Gregorian->month->as_string(LANG=>'en');
print $db_time->Julian->as_string;
print $db_time->Maya->as_string;
my $rel_time=$greg->diff($date);
# Will print something like "3 hours ago" or "5 weeks ago"
print $rel_time->Gregorian->as_string;
DESCRIPTION ^
See the README as for now. By the way, I want to be neutral to the calender system - that's why the SYNOPSIS above looks like it does. Personally I think Gregorian dates sucks a lot - but I'm living in a Gregorian world and I'm myself mostly thinking about time in Gregorian terms anyway.
The same applies to the decimal number system, btw. I mean, of all numbers, why on earth did they chose 2*5? It's really a stupid, ugly number :) Anyway, I'm always thinking in decimal terms, it's very hard for me to do calculations in other systems.
IMPLEMENTATION ^
I'm intending to write a bit about how I've thought implementing this one here. Some thoughts are already in the README.
SUBCLASSING ^
I will write a bit on how to do subclassing and how to contribute new methods here.
AUTHOR ^
Tobias Brox <tobix@irctos.org>
All kinds of feedback is welcome - and is probably a prerequisite for progress on this module.
это все что в нем есть...
а какой у нас календарь григорианский?
Последний раз редактировалось hizel 2008-07-24 14:01:36, всего редактировалось 1 раз.
Причина: [code][/code]
Причина: [code][/code]
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: билинг, месяца, годы и т.д. perl
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
Я не вижу чтобы там можно было сделать, это сделать:
у меня есть 2 даты
500000000
400000000
как мне сделать, то что я описал?
или тут все таки как-то по другому надо ?
вот так чтоли:
вывести всю дату из стобиков в память, дальше удулить повторяющиеся строки чтобы остались только месяца (но это займет ОЧЕНЬ МНОГО времени всё выносить) елси бы диапазоны построить... подскжаите как сделать надо?
или тут надо с помощью СУБД oracl?
у меня есть 2 даты
500000000
400000000
как мне сделать, то что я описал?
или тут все таки как-то по другому надо ?
вот так чтоли:
вывести всю дату из стобиков в память, дальше удулить повторяющиеся строки чтобы остались только месяца (но это займет ОЧЕНЬ МНОГО времени всё выносить) елси бы диапазоны построить... подскжаите как сделать надо?
или тут надо с помощью СУБД oracl?
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: билинг, месяца, годы и т.д. perl
в модуле DateTime кроме объекта DateTime в котором хранится собственно дата-время, есть объект DateTime::Duration в котором хранится разница двух дат
эту разницу в потом можете прибавлять\удалять к другим датам, а также брать иё в различных единицах измерения
извольте вкурить
эту разницу в потом можете прибавлять\удалять к другим датам, а также брать иё в различных единицах измерения
Код: Выделить всё
#!/usr/bin/perl
#
use DateTime;
my $dt1 = DateTime->new( year => 2003, month => 4, day => 5,hour => 2,time_zone => 'local');
my $dt2 = DateTime->new( year => 2008, month => 5, day => 5,hour => 2,time_zone => 'local');
my $delta = $dt2 - $dt1;
print $delta->delta_months;
Код: Выделить всё
perldoc DateTime
Код: Выделить всё
perldoc DateTime::Duration
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
вы наверное имеете ввиду подсчитать количесво месяцев а потом у цикле прибавлять таким образом
буду пробовать - это должно сработать...
Код: Выделить всё
my $dt = DateTime->new( year => 2003, month => 4, day => 5,
hour => 1, minute => 58,
time_zone => "America/Chicago",
);
$dt->add( days => 1, minutes => 3 );
# 2003-04-06 02:01:00
$dt->add( minutes => 3 )->( days => 1 );
# 2003-04-06 03:01:00
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: билинг, месяца, годы и т.д. perl
это всё делается через адын запрос и два ассоциативных массиваProFTP писал(а):что я хочу сделать:
1) вывести все месяца от регистрации пользователя до текущей даты
2) сразу подсчитать за каждый месяц трафик
3) сделать кликабельные ссылки, после клика на месяц чтобы вывелись все дни месяца (как вывести месяца, ну и опрелить дни?)
4) после нажатия на день, чтобы вывелась подробная статистика


- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
я тут не могу найти про дату http://www.mysql.ru/docs/man/ есл ивы это имеете ввиду
если по вашему варианту, zg , то что первое надо делать? если дата стоит пусть в формате обычном "2005.05.05", то как вывести дату чтобы она не повторялась? если всю дату буду выносить то mysql повиснит... каким образом построить хэш? если не сложно, скажите
если по вашему варианту, zg , то что первое надо делать? если дата стоит пусть в формате обычном "2005.05.05", то как вывести дату чтобы она не повторялась? если всю дату буду выносить то mysql повиснит... каким образом построить хэш? если не сложно, скажите
- hizel
- дядя поня
- Сообщения: 9032
- Зарегистрирован: 2007-06-29 10:05:02
- Откуда: Выборг
Re: билинг, месяца, годы и т.д. perl
если вы завязываетесь на мускул то ради бога 

В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.
- ProFTP
- подполковник
- Сообщения: 3388
- Зарегистрирован: 2008-04-13 1:50:04
- Откуда: %&й
- Контактная информация:
Re: билинг, месяца, годы и т.д. perl
ваш вариант больше нравитьсяhizel писал(а):если вы завязываетесь на мускул то ради бога
все равно лижбы работало, только я регулярку не понял в СУБД, чтобы вывести первые даты, и чтобы они не повторялись...
тесты скорости скоро покажу