Лыцарь пичальнава образа - February 10th, 2010 [entries|archive|friends|userinfo]
silly_sad

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

February 10th, 2010

Прекрасная цытата [Feb. 10th, 2010|10:53 am]
"
Если Вы изучали SQL по мануалу MySQL, то [PostgreSQL] Вам ничего не даст, но если Вы читали, например, Дейта или слушали курс по реляционной алгебре....
"

Вырвана из вот этого контекста:
http://www.smira.ru/2009/01/06/postgresql-vs-mysql/

P.S.
кому делать нехер могут почитать коменты, там мускулисты опять продемострировали свой идиотизм.

Я вообще удивляюсь на некоторые "холивары" которые вовсе даже и не холивары. как можно сравнивать СУБД с НЕСУБД ?
Link1 comment|Leave a comment

Дарю функцию [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;



а почему в постгресе не работает как надо оператор деления?
LinkLeave a comment

navigation
[ viewing | February 10th, 2010 ]
[ go | Previous Day|Next Day ]