use SQL::Abstract::More; my $sql_builder = SQL::Abstract::More->new; my ( $sql, @bind ) = $sql_builder->select( -columns => "id, site_id", -from => "jobs", -where => { id => [ 10 .. 20 ], first_seen_time => [ "null", { "<" => time - 86400, ">" => time - 86400 * 8 }, ], }, ); print " SQL: $sql\n\n"; print "BIND: @bind\n";' ... #### SQL: SELECT id, site_id FROM jobs WHERE ( ( ( first_seen_time = ? OR ( first_seen_time < ? AND first_seen_time > ? ) ) AND ( id = ? OR id = ? OR id = ? OR id = ? OR id = ? OR id = ? OR id = ? OR id = ? OR id = ? OR id = ? OR id = ? ) ) ) BIND: null 1486484465 1485879665 10 11 12 13 14 15 16 17 18 19 20