我想写一个选择,只给我一个不同的年份(2018年,2017年,2016年(。
我在表历史记录中有列AS_OF_DATE。
下面是一些 AS_OF_DATE 的示例值:
31-05-18,
31-04-17,
31-07-16,
...
这是我尝试过的,但它不起作用:
SELECT CONCAT('20',DISTINCT SUBSTR(AS_OF_DATE, 7, 2) FROM HISTORY
我使用 CONCAT 在结果前面添加 20,并从第 7 个字符串开始,长度为 2 个字符串(所以我得到 18,17,16......
尝试如下
SELECT DISTINCT '20' || SUBSTR(AS_OF_DATE, 7, 2) FROM HISTORY
通常,你会用extract()
或to_char()
来做到这一点:
select extract(year from as_of_date) as yyyy
或
select to_char(as_of_date, 'YYYY') as yyyy
这假设as_of_date
是一个日期,应该是。
如果需要具有不同年份的结果集,可以添加select distinct
。
SELECT CONCAT('20', SUBSTR(AS_OF_DATE, -2) ) as "Years"
FROM HISTORY
GROUP BY SUBSTR(AS_OF_DATE, -2)
ORDER BY "Years"
演示
起作用:
select distinct extract(year from as_of_date) from History;
extract
函数会取消as_of_date
,前提是它是date
数据类型,并且distinct
数据提取中多次的日期仅选择一个。