postgresql Postgres使用计算字符串作为字段名进行过滤

relj7zay  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(147)

我创建了一个schedule表,

CREATE TABLE schedule (
    id uuid NOT NULL DEFAULT uuid_generate_v4(),
    title varchar(200) NOT NULL,
    monday bool NOT NULL DEFAULT false,
    tuesday bool NOT NULL DEFAULT false,
    wednesday bool NOT NULL DEFAULT false,
    thursday bool NOT NULL DEFAULT false,
    friday bool NOT NULL DEFAULT false,
    saturday bool NOT NULL DEFAULT false,
    sunday bool NOT NULL DEFAULT false,
);

字符串
现在我想运行一个查询和过滤器的时间表下降到那些当前一周的一天是真的,但不知道如何。
我试过的是下面的查询让我知道星期几。

select ('{sunday,monday,tuesday,wednesday,thursday,friday,saturday}'::text[])[date_part('dow', current_date) + 1]


但我不能

select * from schedule 
where ('{sunday,monday,tuesday,wednesday,thursday,friday,saturday}'::text[])[date_part('dow', current_date) + 1] = true


你如何过滤的时间表,其中的当前日期的一周是真的?

2ic8powd

2ic8powd1#

您根本不需要使用文本,只需构建一个包含7个工作日列的布尔值的数组,并将where条件设置为使用该值。

select * from schedule 
where (ARRAY[sunday, monday, tuesday, wednesday, thursday, friday, saturday])[date_part('dow', current_date) + 1]

字符串

相关问题