-- Copyright (C) 1996-2023 The Squid Software Foundation and contributors -- -- Squid software is distributed under GPLv2+ license and includes -- contributions from numerous individuals and organizations. -- Please see the COPYING and CONTRIBUTORS files for details. -- -- we need a separate column to store the date and time of the request ALTER TABLE access_log ADD COLUMN date_day DATE; ALTER TABLE access_log ADD COLUMN date_time TIME; -- let's populate the new columns, in case some rows already exist; -- the date and time values should be set by a trigger UPDATE access_log SET date_day = DATE(FROM_UNIXTIME(time_since_epoch)); UPDATE access_log SET date_time = TIME(FROM_UNIXTIME(time_since_epoch)); -- let's create a view that uses the date column CREATE VIEW requests_per_day_2 AS SELECT date_day, COUNT(*) AS num_of_requests FROM access_log GROUP BY 1 ORDER BY 1; -- that view needs an index on the group by column CREATE INDEX date_day_idx ON access_log(date_day); -- a trigger that automatically extracts the date value from the time_since_epoch column -- and stores it in the date_day column DELIMITER // CREATE TRIGGER extract_date_day_bi BEFORE INSERT ON access_log FOR EACH ROW BEGIN SET NEW.date_day = DATE(FROM_UNIXTIME(NEW.time_since_epoch)); SET NEW.date_time = TIME(FROM_UNIXTIME(NEW.time_since_epoch)); END // -- Note: after running this script against an already populated access_log, -- views have to be recreated, or the new date_day column will not show up. .