我在 PostgreSQL 中有一个 SQL 查询,用于从日期中提取 doy
(一年中的某一天)。我的查询是:
select extract(doy from date_col) as n
from mytable
order by n
我想把它变成一个像 extract_doy(tablename, date_column_name)
这样的函数。
我该怎么做?
最佳答案
假设您想返回一组 double ,类似这样的操作应该有效:
CREATE OR REPLACE FUNCTION tmp_extract_doy(table_name text, column_name text)
RETURNS SETOF DOUBLE PRECISION
AS
$BODY$
DECLARE
BEGIN
RETURN QUERY EXECUTE format('SELECT EXTRACT(doy from %I) AS n FROM %I ORDER BY n', column_name, table_name);
END
$BODY$
LANGUAGE plpgsql
COST 100;
关于function - 将 SQL 查询转换为采用标识符的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730935/