将CONCAT与SUBSTR结合使用



我想写一个选择,只给我一个不同的年份(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数据提取中多次的日期仅选择一个。

最新更新