Я пытаюсь создать оператор выбора SQL в процедуре PL / pgSQL. Все было хорошо, пока мне не пришлось добавить date
к выбору. Проблема в том, что для сравнения дат в предложении select моя дата должна быть заключена в одинарные кавычки ''
(например, '01. 01.2011'), но в моем случае это уже тип text
, и я не могу добавить его туда .
Ниже приведен пример кода, который должен иметь ту же проблему:
CREATE OR REPLACE FUNCTION sample(i_date timestamp without time zone)
RETURNS integer AS
$BODY$
DECLARE
_count integer := 0;
_sql text := '';
BEGIN
IF i_date IS NOT NULL THEN
_cond := _cond || ' AND t.created>' || i_date;
END IF;
_sql := 'SELECT count(*) FROM test t WHERE 1=1' || _cond;
EXECUTE _sql INTO _count;
RETURN _count;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Есть ли другой способ "сбежать" от даты? Или какие-то другие предложения?