Вот некоторый T-SQL, который дает Вам число лет, месяцев и дней со дня, определенного в @date. Это принимает во внимание то, что DATEDIFF () вычисляет различие, не рассматривая, какой месяц или день это (так разность месяца между 8/31, и 9/1 составляет 1 месяц), и дескрипторы, что с оператором выбора, который постепенно уменьшает результат в соответствующих случаях.
DECLARE @date datetime, @tmpdate datetime, @years int, @months int, @days int
SELECT @date = '2/29/04'
SELECT @tmpdate = @date
SELECT @years = DATEDIFF(yy, @tmpdate, GETDATE()) - CASE WHEN (MONTH(@date) > MONTH(GETDATE())) OR (MONTH(@date) = MONTH(GETDATE()) AND DAY(@date) > DAY(GETDATE())) THEN 1 ELSE 0 END
SELECT @tmpdate = DATEADD(yy, @years, @tmpdate)
SELECT @months = DATEDIFF(m, @tmpdate, GETDATE()) - CASE WHEN DAY(@date) > DAY(GETDATE()) THEN 1 ELSE 0 END
SELECT @tmpdate = DATEADD(m, @months, @tmpdate)
SELECT @days = DATEDIFF(d, @tmpdate, GETDATE())
SELECT @years, @months, @days
Или создайте облака для диаграмм через Google - вот жемчужина для этого: https://github.com/mattetti/googlecharts
Пример:
# console
$ ruby script/plugin install git://github.com/mattetti/googlecharts.git
# view
<img src="<%=GoogleChart.pie(['1997',10],['1998',70],['1999',20]).to_url%>">
Для графов на Ruby есть прекрасный драгоценный камень, который называется
. Вам понадобятся великолепные библиотеки imagemagick и rmagick . Поскольку установка последних двух не является тривиальной задачей (но и несложной), для этого есть FAQ по установке .
Выглядит примерно так:
Дополнительные примеры этой библиотеки: http://geoffreygrosenbach.com/projects/show/5
Диаграмма Yui из Yahoo работает и в автономном режиме. Для этого есть рубиновый плагин, я не знаю его названия, извините.
Открыть Flash Chart 2 очень приятно и довольно просто. Вы получаете больше динамических функций (всплывающие подсказки, onclick, hover, ...): выглядит красиво :)
В этом родственном вопросе упоминается еще несколько очень интересных альтернатив. Из них я считаю наиболее интересными (мне не разрешено использовать гиперссылки, поэтому используйте google :)
Это обе библиотеки javascript, предлагающие такой же внешний вид и интерактивность, как альтернатива flash, без использования flash, что, по-моему, большое преимущество. Кроме того, кажется, что существует больше интерактивных опций / возможностей, чем может предложить открытая флэш-карта. Я собираюсь проверить это :)
Мне не разрешено показывать более 1 URL, поэтому Google - ваш друг :)
Надеюсь, это поможет :)
Есть еще один гем, называемый scruffy, которому не нужны rmagick и imagemagick / graphicsmagick, если вы хотите сгенерировать только svg.
Вот страница проекта http://scruffy.rubyforge.org , на которой довольно много примеров
Помимо упомянутого выше гема googlecharts есть еще два, использующих API Google Charts, gchartb и ruby-googlechart.
Для очень замечательной библиотеки protovis javascript charting library, похоже, что кто-то запустил плагин для rails под названием protovis on rails, но он все еще выглядит грубым и давно не трогался.
Долой вспышку и imagemagick.
Попробуйте Highcharts с плагином lazy high charts для рубина: github.com/michelson/lazy_high_charts.