Как отнять 1 месяц от даты
У меня есть запрос
WITH crimes_count AS
(SELECT *
FROM
(SELECT *
FROM
(SELECT category,
MONTH AS mth,
COUNT(*) OVER(PARTITION BY category, MONTH
ORDER BY MONTH)
FROM streetlevelcrimes) AS a
GROUP BY a.category,
a.mth,
a.count
ORDER BY a.mth) AS b)
SELECT *
FROM crimes_count AS a
JOIN crimes_count AS b ON a.category = b.category
WHERE FORMAT(a.mth, 'YYYY-MM') = add_months(FORMAT(a.mth, 'YYYY-MM'), -1) # Вот тут мне нужно отнять 1 месяц
Дата хранится в формате TEXT и выглядит следующим образом: '2018-01', ('YYYY-MM').
Мне надо конвертировать текст в дату и отнять от этой даты месяц, по данному запросу выдает ошибку
No function matches the given name and argument types. You might need to add explicit
type casts.
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Вам нужны функции to_date и to_char:
SELECT to_char(to_date('2018-01', 'YYYY-MM') - INTERVAL '1 month', 'YYYY-MM');
Результат:
to_char --------- 2017-12 (1 row)