我想写一个选择,只会给我一个独特的年份(2018,2017,2016)。
我在表HISTORY中有列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,SUBSTR从第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
只选择一个用于提取中多次的日期。