sql - 如何在程序中正确比较日期时间?(PostgreSQL)
问题描述
在PostgreSQL数据库中,我创建了如下所示的过程:
CREATE OR REPLACE PROCEDURE tracker(CUSTOM_TIME VARCHAR) AS $FUNCTION$
BEGIN
UPDATE SURVEYS SET CONDITION = 3 WHERE CONDITION = 2 AND CUSTOM_TIME > END_PERIOD;
UPDATE SURVEYS SET BLOCKED = TRUE WHERE CONDITION = 2 AND CUSTOM_TIME BETWEEN START_PERIOD AND END_PERIOD;
END;
$FUNCTION$ LANGUAGE plpgsql;
当我尝试启动此过程时,它会引发错误。
CALL tracker('2019-03-29 16:37:00');
错误:
SQL Error [42883]: ERROR: operator does not exist: character varying > timestamp without time zone
No operator matches the given name and argument types. You might need to add explicit type casts.
PL/pgSQL function tracker(character varying) line 3 at SQL statement
我在哪里犯错?
解决方案
尝试这个..
CREATE OR REPLACE function tracker(CUSTOM_TIME timestamp without time zone) RETURNS void
AS $FUNCTION$
BEGIN
UPDATE SURVEYS SET CONDITION = 3 WHERE CONDITION = 2 AND CUSTOM_TIME > END_PERIOD;
UPDATE SURVEYS SET BLOCKED = TRUE WHERE CONDITION = 2 AND CUSTOM_TIME BETWEEN START_PERIOD AND END_PERIOD;
END;
$FUNCTION$
LANGUAGE plpgsql;
推荐阅读
- excel - 将多个工作簿中的特定范围复制到一个工作表中
- powershell - 创建用户时如何更改本地用户设置“用户下次登录时必须更改密码”
- matlab - 如何绘制“日期时间”数据与数字?“错误:数据输入必须与轴配置相匹配...”
- python - Spark基于特定列将多行组合为单行,而无需进行groupBy操作
- java - 如何让一个函数等待另一个函数在 JobService 中完成运行
- ios - iOS apple-app-site-association - 它是否需要脱离我的服务器的根目录?
- java - 从文件中读取事件,并使用对象层次结构
- solr - Nopcommerce 4.3 中的 Solr 搜索
- c# - 如何在链表中搜索元素?(C#)
- amazon-web-services - AWS redis set expire 无法正常工作