用于检查日期范围的 Postgresql 函数

Posted

技术标签:

【中文标题】用于检查日期范围的 Postgresql 函数【英文标题】:Postgresql function for checking date ranges 【发布时间】:2012-04-21 05:30:38 【问题描述】:

我不确定如何使用 postgres 函数检查日期范围。我想要做的是检查日期是否在一定范围内(开始日期前一周有余地)

所以基本上,我想检查日期是否在7 days before to current date 之间,如果是,我将返回该行的 id。

create or replace function eight(_day date) returns text as $$
declare
  r record;
  check alias for $1;
  startDate date;
begin
    for r in
    select * from terms
    order by starting;
  loop
    startDate := r.starting;
    if check between (..need help to create 7 days before startDate) and startDate return r.id;


end;
$$ language plpgsql;

我还必须检查上一条记录的结束日期是否与 startDate - 7 天相冲突。如何查看以前的记录?

【问题讨论】:

PostgreSQL checking a previous record's element 的可能重复项 【参考方案1】:

听起来你想使用interval:

startDate - interval '...'

既然你在做作业,我就不多说了。

【讨论】:

我使用的是if check between startDate - interval '7 days',但我不确定这是否有效 @SNpn:你为什么不认为between startDate - interval '7 days' and startDate 有效? 我不确定'7 days' 部分是否有效,您也可以阅读我在 OP 中的编辑 - 有点卡在如何解决这个问题上。 添加了我的答案。只需在 (startdate - 7) 和 startdate 等之间进行。日期适用于整数数学,其中整数代表天数。【参考方案2】:

日期适用于整数数学。

startdate - 8 等价于 (startdate::timestamp - '8 days'::interval)::date

【讨论】:

以上是关于用于检查日期范围的 Postgresql 函数的主要内容,如果未能解决你的问题,请参考以下文章

日期范围之间的 Postgresql 查询

差距和岛屿 - 使用 Postgresql 获取某个日期范围内的失业日期列表

错误:Postgresql 中的日期/时间字段值超出范围

PostgreSQL,检查相对于“今天”的日期

检查输入的日期时间是不是在 2 个日期时间值的范围内

PostgreSQL:如何在给定日期范围内的每一天为每个帐户选择最后余额? [复制]