我想写一个仅返回不同年份(2018、2017、2016)的select。
我在表的历史记录中有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在结果和SUBSTR前面添加20,SUBSTR将从第7个字符串开始,长度为2个字符串(因此我得到18,17,16...)
发布于 2019-04-16 00:03:24
尝试如下所示
SELECT DISTINCT '20' || SUBSTR(AS_OF_DATE, 7, 2) FROM HISTORY
发布于 2019-04-16 00:10:15
通常,您可以使用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
。
发布于 2019-04-16 03:55:06
这将会起作用:
select distinct extract(year from as_of_date) from History;
如果日期是date
数据类型,则extract
函数将去掉as_of_date
,并且对于在提取中多次出现的日期,distinct
只选择一个。
https://stackoverflow.com/questions/55693123
复制相似问题