【发布时间】:2012-03-19 14:56:27
【问题描述】:
我正在尝试在 PL/pgSQL 过程中创建 SQL 选择语句。直到我不得不在选择中添加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;
还有其他方法可以“逃避”约会吗?还是有其他建议?
【问题讨论】:
-
我有点糊涂,你的意思是你的例子中的t.created是数据库中的varchar吗?
-
不,是日期。但是如果 i_date 周围没有 '' ,那么它就是在做算术方程而不是比较两个日期。
标签: sql postgresql date