我想在PL/pgSQL過程中創建一個SQL select語句。這一切都很好,直到我不得不將date
添加到選擇。問題是,在select語句中比較日期時,我的日期必須用單引號''
(例如'01 .01.2011')括起來,但在我的情況下,它已經是text
類型,我不能將它添加到那裏。PostgreSQL execute + date
下面是應該有同樣的問題示例代碼:
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;
是否有任何其他的方式來「逃避」的日期?或者其他一些建議?
我有點困惑,你的意思是t.created在你的例子中是varchar在數據庫中? – 2012-03-19 15:02:14
不,這是日期。但是如果i_date沒有圍繞它,那麼它就是在計算方程而不是比較兩個日期。 – srumjant 2012-03-20 07:49:45