[英]How to select a list of years x number of years from this year
嘗試在psql中構造一個select語句,其中包含的年份列表是(x)“今年”之前的年數。
修改SQL中提供的答案, 以返回自特定年份以來 sql的年份列表 ,但不是postgres。
嘗試過修改generate_series,但沒有成功。
使用-1步。 例子x = 15
select *
from
generate_series(
extract(year from current_date)::int,
extract(year from current_date)::int - 15,
-1
)
另一種方法:
select
extract(year from x.y)
from
generate_series(
current_timestamp,
current_timestamp - interval '1 year' * 15,
interval '-1 year'
) as x(y)
實時測試: https : //www.db-fiddle.com/f/shVQnibndNh45uCZxt4jgs/3
稍微更短一些:您還可以使用generate_series
函數的數字變量並直接轉換EXTRACT
函數的返回值,例如:
SELECT
EXTRACT(YEAR FROM CURRENT_DATE + ('1y'::interval * x))::text AS year
FROM
generate_series(-7, -1) AS x
;
如果您碰巧將“年”作為日期,您可以:
select *
from generate_series(date_trunc('year', now()) - interval '15 year',
date_trunc('year', now()),
interval '1 year'
)
(這就是我通常想要的年份列表。)
更重要的是,您可以輕松地將SQL Server代碼調整為Postgres:
with recursive yearlist as (
select extract(year from now()) as year, 1 as lev
union all
select yl.year - 1 as year, lev + 1
from yearlist yl
where lev < 15
)
select year
from yearlist
order by year desc;
我建議使用generate_series()
,但我想證明Postgres也支持遞歸CTE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.