将 CONCAT 与 SUBSTR 结合使用

Using CONCAT in combination with SUBSTR

我想写一个 select,它只会 return 我不同的年份(2018、2017、2016)。

我在 table 历史记录中有 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

您可以使用

  SELECT CONCAT('20', SUBSTR(AS_OF_DATE, -2) ) as "Years"
    FROM HISTORY
   GROUP BY SUBSTR(AS_OF_DATE, -2)
   ORDER BY "Years"

Demo

通常,您会使用 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 distinct extract(year from as_of_date) from History;

extract 函数取消了 as_of_date,前提是它是 date 数据类型,而 distinct select 只有一个日期在该提取物。