我在PostgreSQL中有一个SQL查询,可以从日期中提取doy
(一年中的某一天)。我的疑问是:
select extract(doy from date_col) as n
from mytable
order by n
我想把它变成像extract_doy(tablename, date_column_name)
这样的函数
我该怎么做?
答案 0 :(得分:2)
假设你想要返回一组双打,那么这样的东西应该有效:
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;