postgresql - 函数提供输入位于之间的间隔 id
问题描述
我想创建一个函数,该函数将接收日期作为输入,并能够返回它所在的相应间隔的 id。
例如这里的表:
id | start | end
-- +------------+------------
1 | 2000-11-30 | 2001-02-19
2 | 2001-02-21 | 2001-06-04
3 | 2001-06-05 | 2001-07-13
4 | 2001-07-15 | 2001-11-29
如果我输入日期“2001-04-17”,我希望它返回 2 的 id 值。
我目前正在尝试这个,但无法让它工作:
create or replace function getId(_date date) returns integer
as $$
declare
myId integer;
begin
set myId = (select id from myTable
where ((_date >= start) and (_date <= end)));
return myId;
end;
$$ language plpgsql
;
解决方案
id
不用设置就可以直接返回myId
。Andend
是 PostgreSQL 关键字,所以你应该在双引号内使用它""
create or replace function getId(_date date) returns integer
as $$
begin
return (select id from myTable
where ((_date >= start) and (_date <= "end")));
end;
$$ language plpgsql
;
调用函数:
select getId('2001-04-17');
Output: 2
推荐阅读
- git - 当我们在 cli 中使用分支而不是提交 ID 时,AWS 代码构建错误并显示“不正确的 commid ID”
- html - 滚动时如何编辑缩放位置
- navision - navision 报告上的交替颜色,即白色和灰色交替的线条?
- java - 来自 Java 用户输入的字数和行数计数器
- r - 将可旋转输出导出为图像
- ios - Int 的默认大小可以改变吗?
- javascript - 异步函数阻止事件循环 - 调用 app.get 方法时不呈现页面
- python-3.x - 如何在 OS X Catalina 上使用 cron 调度 python 脚本
- spartacus-storefront - 刷新令牌功能
- iphone - 如何在 Flutter 中为 iOS 的 CupertinoPicker/CupertinoDatePicker 添加/启用自动收报机声音?