#mysql #mariadb
#mysql #mariadb
Вопрос:
Вот запрос, который должен дать мне результаты за последние 12 месяцев, но он дает мне полные результаты с 2014 года.
Что с ним не так?
Я попытался сделать
(where a.time > '2020-01-01 00:00:00')
но я не хочу фиксированную дату в запросе.
SET @no_of_months = 12; #change to the desired no. of months
CREATE TEMPORARY TABLE if NOT EXISTS newAuditlog
SELECT
a.id, a.user, a.action, a.project, a.info, a.TIME, a.project_ref, a.workpackage_ref, a.partner_ref
FROM auditlog a
WHERE a.time < (DATE_SUB(CURDATE(), INTERVAL @no_of_months MONTH))
GROUP BY user
ORDER BY user;
SELECT
na.id, na.user, b.roles, na.action, na.project, na.info, na.TIME, na.project_ref, na.workpackage_ref, na.partner_ref
FROM newAuditlog na
INNER JOIN(
SELECT u.id AS user_id,
u.username,
GROUP_CONCAT(r.role ORDER BY r.role SEPARATOR ', ') AS roles
FROM user_has_role uhr
LEFT OUTER JOIN user u ON (uhr.user_id = u.id)
LEFT OUTER JOIN role r ON (uhr.role_id = r.id)
GROUP BY uhr.user_id
ORDER BY uhr.user_id
)b
ON SUBSTR(na.user, INSTR(na.user, "(") 1, INSTR(na.user, ")") -1- (INSTR(na.user, "("))) = b.user_id;
DROP TEMPORARY TABLE newAuditlog;
Ответ №1:
WHERE a.time < (DATE_SUB(CURDATE(), INTERVAL @no_of_months MONTH))
у вас есть <
, но вы хотите >
Комментарии:
1. БОЖЕ! большое вам спасибо… это было правильно, на самом деле это довольно глупо, когда я пишу такой код и получаю кучу маленьких крошечных вещей, таких как знак ‘<‘ или ‘>’
2. Честно говоря, это происходит постоянно со всеми