I have scoured the web for the past 4 hours in search of a solution but all i can find is:
You cant. Impossible. Not gonna happen.
I dont like that approach.
The issue here is that the scope of MySQL triggers is row-level, not statement-level. As such, within the trigger you have access to the OLD and NEW values for each column in the given row, but you do not have access to the statement that caused the trigger to fire.
In regard to information_schema.processlist, nothing is actually "stored" (persisted) in that view. It's just a SQL interface to the processlist, and the statement that caused the trigger to fire is not accessible within the scope of the trigger.
You said you don't want to enable the general query log, and this approach isn't perfect for multiple reasons (including the granularity of event_Time being 1 second), but here's an example of how you could re-write your trigger using the general_log table:
SET GLOBAL GENERAL_LOG='ON';
SET GLOBAL LOG_OUTPUT='TABLE';
DELIMITER ||
CREATE TRIGGER DEBUG_DATE BEFORE UPDATE ON db.tbl FOR EACH ROW
BEGIN
DECLARE Q MEDIUMTEXT;
SELECT argument INTO Q
FROM mysql.general_log
where thread_id = connection_id()
order by event_time desc
limit 1;
INSERT INTO db.tbl_log (INFO)
VALUES (Q);
END ||
DELIMITER ;