如何在postgresql中从工作日数字获取日期名称?

Kev*_*son 4 sql postgresql date-arithmetic

我有一个表,其中工作日存储为整数(0 到 6)。

我需要什么函数来创建与这些日期数字相关的日期名称?

例如:0 -> 周日,1->周一等

喜欢:

SELECT magic(my_day_number) FROM my_table;
Mon
Run Code Online (Sandbox Code Playgroud)

小智 5

这就是我要使用的:

select ('{Sun,Mon,Tue,Wed,Thu,Fri,Sat}'::text[])[extract(dow from now()) + 1] as day_of_week;
Run Code Online (Sandbox Code Playgroud)

或者,如果您更喜欢函数:

CREATE OR REPLACE FUNCTION dow_name(p_index integer)
RETURNS text LANGUAGE sql STRICT IMMUTABLE PARALLEL SAFE AS
$$
  SELECT (array['Sun','Mon','Tue','Wed','Thu','Fri','Sat'])[p_index + 1];
$$;
Run Code Online (Sandbox Code Playgroud)

与 using block 相比,两个选项 with'{...}'::text[]和 的工作速度(在 Postgres 12 上)都快 8% 。array[...]CASE