| Прекрасная цытата |
[Feb. 10th, 2010|10:53 am] |
" Если Вы изучали SQL по мануалу MySQL, то [PostgreSQL] Вам ничего не даст, но если Вы читали, например, Дейта или слушали курс по реляционной алгебре.... "
Вырвана из вот этого контекста: http://www.smira.ru/2009/01/06/postgresql-vs-mysql/
P.S. кому делать нехер могут почитать коменты, там мускулисты опять продемострировали свой идиотизм.
Я вообще удивляюсь на некоторые "холивары" которые вовсе даже и не холивары. как можно сравнивать СУБД с НЕСУБД ? |
|
|
| Дарю функцию |
[Feb. 10th, 2010|11:05 am] |
-- args: -- $1 -- an interval to divide -- $2 -- a divisor interval -- $3 -- accuracy (an interval about zero to treat as zero value) -- returns: -- a float number indicating ratio of $1 by $2 (how many times $1 is longer than $2) CREATE OR REPLACE FUNCTION interval_ratio ( INTERVAL, INTERVAL, INTERVAL ) RETURNS FLOAT8 AS $$ DECLARE sign INT2; k INT8; c INTERVAL; t INTERVAL; a INTERVAL; b INTERVAL; epsilon INTERVAL; BEGIN a = $1; b = $2; epsilon = $3;
IF epsilon <= '0 sec'::INTERVAL THEN epsilon := '0.00001 sec'; END IF;
sign := 1; IF a < '0 sec'::INTERVAL THEN sign := -sign; a := a*(-1); END IF; IF b < '0 sec'::INTERVAL THEN sign := -sign; b := b*(-1); END IF;
IF a < b THEN RETURN sign/interval_ratio (b,a,epsilon); END IF; IF a - b <= epsilon THEN RETURN sign; END IF;
k := 1; t := b; WHILE (a > t) LOOP c := t; t := t*2; k := k*2; END LOOP; k := k/2; a := a-c; RETURN sign*(k + interval_ratio(a,b,epsilon)); END; $$ LANGUAGE plpgsql IMMUTABLE RETURNS NULL ON NULL INPUT;
а почему в постгресе не работает как надо оператор деления? |
|
|