PostgreSQL存储过程数据参数
发布时间:2020-12-13 15:57:22 所属栏目:百科 来源:网络整理
导读:我有以下存储过程,它返回0结果,但如果单独运行查询,则会产生大量结果.我错过了什么. CREATE OR REPLACE FUNCTION countStatistics(baselineDate Date) RETURNS int AS $$DECLARE qty int;BEGIN SELECT COUNT(*) INTO qty FROM statistics WHERE time_stamp =
我有以下存储过程,它返回0结果,但如果单独运行查询,则会产生大量结果.我错过了什么.
CREATE OR REPLACE FUNCTION countStatistics(baselineDate Date) RETURNS int AS $$ DECLARE qty int; BEGIN SELECT COUNT(*) INTO qty FROM statistics WHERE time_stamp = baselineDate; RETURN qty; END; $$LANGUAGE plpgsql; --Execute the function SELECT countStatistics('2015-01-01 01:00:00') as qty; 返回0结果 SELECT COUNT(*) FROM statistics WHERE time_stamp = '2015-01-01 01:00:00'; 返回100结果 解决方法
您将baselineDate参数声明为日期:
CREATE OR REPLACE FUNCTION countStatistics(baselineDate Date) 但使用它作为时间戳: SELECT COUNT(*) INTO qty FROM statistics WHERE time_stamp = baselineDate; 您正在获得隐式转换,因此countStatistics(‘2015-01-01 01:00:00’)将实际执行此SQL: SELECT COUNT(*) INTO qty FROM statistics WHERE time_stamp = '2015-01-01'; 并且,在将日期隐式地转换回时间戳之后,它实际上将是这样的: SELECT COUNT(*) INTO qty FROM statistics WHERE time_stamp = '2015-01-01 00:00:00'; 尝试更改函数声明以使用时间戳: CREATE OR REPLACE FUNCTION countStatistics(baselineDate timestamp) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 计时器的time_t和clock_t 的两种实现方法(推荐)
- ruby-on-rails – 使用CloudFlare SSL在Rails 4上使用force
- c# 中文转拼音without CJK
- C#为什么调整图像大小会增加文件大小
- applicationContext.xml整合hibernate mybatis
- ruby-on-rails – 如何使用Rails collection_radio_buttons
- Flash存储芯片M25P16中文资料
- opencv下XML 文件的读写 很全滴
- 单文件组件(single-file components)
- Redis进阶实践之十五 Redis-cli命令行工具使用详解第二部分