首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将时间戳参数传递给PostgreSQL10.6中的函数

将时间戳参数传递给PostgreSQL10.6中的函数
EN

Stack Overflow用户
提问于 2019-06-26 14:29:12
回答 1查看 5.8K关注 0票数 0

我正在构建这个功能:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION qradar21(cliente_in VARCHAR(50), fecha_inicio timestamp, fecha_fin timestamp) RETURNS TABLE(empresa varchar, fecha timestamp, fuente text, total float) AS $$
    BEGIN
        RETURN QUERY
            SELECT qradar_eventos_detalle.empresa, qradar_eventos_detalle.fecha, eventos->>'fuente' AS fuente, sum((eventos->>'total')::float) AS total FROM public.qradar_eventos_detalle
            WHERE qradar_eventos_detalle.empresa = 'cliente_in'
            AND qradar_eventos_detalle.fecha BETWEEN 'fecha_inicio' AND 'fecha_fin'
            GROUP BY qradar_eventos_detalle.empresa, qradar_eventos_detalle.fecha, qradar_eventos_detalle.eventos
            ORDER BY total DESC;
    END;
$$ LANGUAGE plpgsql

并称其为:

代码语言:javascript
复制
SELECT * FROM qradar21('BancoXXX', '2018-12-29 12:00:00', '2019-03-03 07:00:00');

收到这条信息:

错误:类型时间戳的输入语法无效:«fecha_inicio»第3行:和qradar_eventos_detalle.fecha之间的'fecha_inicio‘A。

如果我将函数更改为直接使用日期(“2018-12-29 12:00”和“2018-12-30 07:00:00”之间的qradar_eventos_detalle.fecha ),那么效果很好。

我不知道我做错了什么..。有人知道如何将这种“没有时区的时间戳”格式传递给函数吗?提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-26 14:31:09

您的函数使用字符串文本,而不是引用参数。

您需要删除参数名称周围的单引号:

代码语言:javascript
复制
WHERE qradar_eventos_detalle.empresa = cliente_in --<< no quotes here!
AND qradar_eventos_detalle.fecha BETWEEN fecha_inicio AND fecha_fin
                                         ^
                                        or here

当您调用它时,最好使用正确的时间戳文字:

代码语言:javascript
复制
SELECT * 
FROM qradar21('BancoXXX', timestamp '2018-12-29 12:00:00', timestamp '2019-03-03 07:00:00');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56775190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档