+------------+---------------+------------+ | date | other_columns | date2 | +------------+---------------+------------+ | 2019-05-23 | # | 2018-04-12 | +------------+---------------+------------+ | 2013-04-08 | # | null | +------------+---------------+------------+ | 2007-11-11 | # | 2019-09-13 | +------------+---------------+------------+
there is such a table in mySQL, with several thousand rows. how can I get out of there only years without requesting the entire base. I just can’t figure out how to do this.
[2019, 2018, 2013, 2007]
I would like to extract them something like this, I will be glad to any advice
Advertisement
Answer
You can use year() and union all:
select distinct year(date)
from (select date from t union all
      select date2 from t
     ) t;
If you want this as a single concatenated string, I would recommend:
select group_concat(yyyy order by yyyy) as years
from (select year(date) as yyyy from t
      union -- intentionally remove duplicates
      select year(date2) from t
     ) t;