Вы можете сделать это, используя to_date
, чтобы преобразовать число в тип данных DATE, а затем trunc
, чтобы усечь его до первого числа месяца, или to_char
, чтобы превратить его в месяц + год, например:
SELECT SYSDATE,
TRUNC(SYSDATE, 'mm') mnth_yr1,
to_char(SYSDATE, 'fmMonth yyyy') mnth_yr2
FROM dual;
SYSDATE MNTH_YR1 MNTH_YR2
------------------- ----------- --------------
03/02/2020 15:56:02 01/02/2020 February 2020
Обратите внимание на использование fm
в маске формата to_char
- это заставляет Месяц выводить только символы в месяце, вместо добавления дополнительных пробелов, чтобы сделать его такой же длины, как самый длинный month.
Получив месяц / год, вы можете использовать его для группировки в агрегированном запросе, например:
SELECT TRUNC(your_num_col, 'mm') mnth_yr,
SUM(your_value_col)
FROM your_table
GROUP BY TRUNC(your_num_col, 'mm');