Filter Conditions
Reports, Charts, Dashboards are intended to be created and modified through the user interface. The file representation is for checking errors during validation.
Filter conditions is an array of Malloy Filter Expressions. They can be applied to the fields of Malloy models.
In Mprove:
- All non-negated expressions in the array are combined with "OR"
- All negated expressions in the array are combined with "AND"
- Negated and non-negated expressions cannot be mixed in a single element of the conditions array (they must be split into separate elements of the conditions array)
Examples
String
Multiple expressions of string filter can only be separated by the "," character, otherwise they must be specified as separate array elements.
apply_to: string_field_pathconditions: ### PostgreSQL ###- f`` # true // the same as no filter- f`a%z` # OR field LIKE 'a%z'- f`-FOO-` # OR field = 'FOO'- f`%FOO%` # OR field LIKE '%FOO%'- f`FOO%` # OR field LIKE 'FOO%'- f`%FOO` # OR field LIKE '%FOO'- f`null` # OR field IS NULL- f`blank` # OR COALESCE(field,'') = ''- f`OH, NY` # OR field IN ('OH', 'NY')- f`UT, MT%` # OR (field = 'UT' OR field LIKE 'MT%')- f`\\%%` # OR field LIKE '\\%%'- f`-a%z` # AND (field NOT LIKE 'a%z' OR field IS NULL)- f`-FOO` # AND (field != 'FOO' OR field IS NULL)- f`-%FOO%` # AND (field NOT LIKE '%FOO%' OR field IS NULL)- f`-FOO%` # AND (field NOT LIKE 'FOO%' OR field IS NULL)- f`-%FOO` # AND (field NOT LIKE '%FOO' OR field IS NULL)- f`-null` # AND field IS NOT NULL- f`-blank` # AND COALESCE(field,'') != ''- f`-NC, -ND` # AND (field NOT IN ('NC', 'ND') OR field IS NULL)Number
Multiple non-negated expressions of number filter can only be separated by the "or", otherwise they must be specified as separate array elements.
Multiple negated expressions of number filter can only be separated by the "and", otherwise they must be specified as separate array elements.
apply_to: number_field_pathconditions: ### PostgreSQL ###- f`` # true // the same as no filter- f`1` # OR field = 1- f`<= 2` # OR field <= 2- f`>= 3` # OR field >= 3- f`< 4` # OR field < 4- f`> 5` # OR field > 5- f`null` # OR field IS NULL- f`(6 to 7)` # OR (field > 6 AND field < 7)- f`(8 to 9]` # OR (field > 8 AND field <= 9)- f`[10 to 11)` # OR (field >= 10 AND field < 11)- f`[12 to 13]` # OR (field >= 12 AND field <= 13)- f`14, 15` # OR field IN (14, 15)- f`16 or 17, 18 or < 19` # OR (field IN (16, 17, 18) OR field < 19)- f`!= 20` # AND (field != 20 OR field IS NULL)- f`not (21, 22)` # AND NOT (field IN (21, 22))- f`not null` # AND field IS NOT NULLBoolean
apply_to: boolean_field_pathconditions: ### PostgreSQL ###- f`` # true // the same as no filter- f`=true` # AND field- f`=false` # AND NOT (field)- f`true` # AND COALESCE(field, false)- f`false` # AND NOT COALESCE(field, false)- f`null` # AND (field) IS NULL- f`not =true` # AND NOT (field)- f`not =false` # AND field- f`not true` # AND NOT COALESCE(field, false)- f`not false` # AND COALESCE(field, false)- f`not null` # AND (field) IS NOT NULLTimestamp
Multiple non-negated expressions of time filter can only be separated by the "or", otherwise they must be specified as separate array elements.
Multiple negated expressions of time filter can only be separated by the "and", otherwise they must be specified as separate array elements.
apply_to: time_field_pathconditions: ### PostgreSQL ###- f`` # true // the same as no filter- f`null` # OR field IS NULL- f`now` # OR (field = LOCALTIMESTAMP)- f`today` # OR (field >= DATE_TRUNC('day', LOCALTIMESTAMP) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer))- f`yesterday` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(1)::integer) AND field < DATE_TRUNC('day', LOCALTIMESTAMP))- f`tomorrow` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(2)::integer))- f`2025` # OR (field >= TIMESTAMP '2025-01-01 00:00:00' AND field < TIMESTAMP '2026-01-01 00:00:00')- f`2025-Q1` # OR (field >= TIMESTAMP '2025-01-01 00:00:00' AND field < TIMESTAMP '2025-04-01 00:00:00')- f`2025-01` # OR (field >= TIMESTAMP '2025-01-01 00:00:00' AND field < TIMESTAMP '2025-02-01 00:00:00')- f`2025-02-03-WK` # OR (field >= TIMESTAMP '2025-02-02 00:00:00' AND field < TIMESTAMP '2025-02-09 00:00:00')- f`2025-02-03` # OR (field >= TIMESTAMP '2025-02-03 00:00:00' AND field < TIMESTAMP '2025-02-04 00:00:00')- f`2025-02-03 04` # OR (field >= TIMESTAMP '2025-02-03 04:00:00' AND field < TIMESTAMP '2025-02-03 05:00:00')- f`2025-02-03 04:05` # OR (field >= TIMESTAMP '2025-02-03 04:05:00' AND field < TIMESTAMP '2025-02-03 04:06:00')- f`2025-02-03 04:05:06` # OR (field = TIMESTAMP '2025-02-03 04:05:06')- f`2025-02-03 04:05:06.7` # OR (field = TIMESTAMP '2025-02-03 04:05:06.7')- f`this year` # OR (field < DATE_TRUNC('year', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('year', LOCALTIMESTAMP))+make_interval(years=>(1)::integer))- f`this quarter` # OR (field < DATE_TRUNC('quarter', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('quarter', LOCALTIMESTAMP))+make_interval(months=>(1*3)::integer))- f`this month` # OR (field < DATE_TRUNC('month', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('month', LOCALTIMESTAMP))+make_interval(months=>(1)::integer))- f`this week` # OR (field < (DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY) OR field >= ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(1*7)::integer))- f`this day` # OR (field < DATE_TRUNC('day', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer))- f`this hour` # OR (field < DATE_TRUNC('hour', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('hour', LOCALTIMESTAMP))+make_interval(hours=>(1)::integer))- f`this minute` # OR (field < DATE_TRUNC('minute', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('minute', LOCALTIMESTAMP))+make_interval(mins=>(1)::integer))- f`last year` # OR (field < (DATE_TRUNC('year', LOCALTIMESTAMP))-make_interval(years=>(1)::integer) OR field >= DATE_TRUNC('year', LOCALTIMESTAMP))- f`last quarter` # OR (field < (DATE_TRUNC('quarter', LOCALTIMESTAMP))-make_interval(months=>(1*3)::integer) OR field >= DATE_TRUNC('quarter', LOCALTIMESTAMP))- f`last month` # OR (field < (DATE_TRUNC('month', LOCALTIMESTAMP))-make_interval(months=>(1)::integer) OR field >= DATE_TRUNC('month', LOCALTIMESTAMP))- f`last week` # OR (field < ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(1*7)::integer) OR field >= (DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))- f`last day` # OR (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(1)::integer) OR field >= DATE_TRUNC('day', LOCALTIMESTAMP))- f`last hour` # OR (field < (DATE_TRUNC('hour', LOCALTIMESTAMP))-make_interval(hours=>(1)::integer) OR field >= DATE_TRUNC('hour', LOCALTIMESTAMP))- f`last minute` # OR (field < (DATE_TRUNC('minute', LOCALTIMESTAMP))-make_interval(mins=>(1)::integer) OR field >= DATE_TRUNC('minute', LOCALTIMESTAMP))- f`next year` # OR (field < (DATE_TRUNC('year', LOCALTIMESTAMP))+make_interval(years=>(1)::integer) OR field >= (DATE_TRUNC('year', LOCALTIMESTAMP))+make_interval(years=>(2)::integer))- f`next quarter` # OR (field < (DATE_TRUNC('quarter', LOCALTIMESTAMP))+make_interval(months=>(1*3)::integer) OR field >= (DATE_TRUNC('quarter', LOCALTIMESTAMP))+make_interval(months=>(2*3)::integer))- f`next month` # OR (field < (DATE_TRUNC('month', LOCALTIMESTAMP))+make_interval(months=>(1)::integer) OR field >= (DATE_TRUNC('month', LOCALTIMESTAMP))+make_interval(months=>(2)::integer))- f`next week` # OR (field < ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(1*7)::integer) OR field >= ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(2*7)::integer))- f`next day` # OR (field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(2)::integer))- f`next hour` # OR (field < (DATE_TRUNC('hour', LOCALTIMESTAMP))+make_interval(hours=>(1)::integer) OR field >= (DATE_TRUNC('hour', LOCALTIMESTAMP))+make_interval(hours=>(2)::integer))- f`next minute` # OR (field < (DATE_TRUNC('minute', LOCALTIMESTAMP))+make_interval(mins=>(1)::integer) OR field >= (DATE_TRUNC('minute', LOCALTIMESTAMP))+make_interval(mins=>(2)::integer))- f`monday` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7+1)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7)::integer))- f`last monday` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7+1)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7)::integer))- f`next monday` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>((1-((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)+6)%7+1)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>((1-((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)+6)%7+2)::integer))- f`3 days ago to now` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(3)::integer) AND field < LOCALTIMESTAMP)- f`3 weeks ago to now` # OR (field >= ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(3*7)::integer) AND field < LOCALTIMESTAMP)- f`5 days ago` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(4)::integer))- f`5 days from now` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(5)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(6)::integer))- f`5 days ago for 2 days` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer) AND field < ((DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer))+make_interval(days=>(2)::integer))- f`5 days from now for 2 days` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(5)::integer) AND field < ((DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(5)::integer))+make_interval(days=>(2)::integer))- f`5 weeks ago for 2 months` # OR (field >= ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(5*7)::integer) AND field < (((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(5*7)::integer))+make_interval(months=>(2)::integer))- f`5 weeks from now for 2 months` # OR (field >= ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(5*7)::integer) AND field < (((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(5*7)::integer))+make_interval(months=>(2)::integer))- f`last 5 days` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer) AND field < DATE_TRUNC('day', LOCALTIMESTAMP))- f`next 5 days` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(6)::integer))- f`5 days` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(4)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer))- f`before 2025-Q2` # OR (field < TIMESTAMP '2025-03-01 00:00:00')- f`before 2025-02-03-WK` # OR (field < TIMESTAMP '2025-02-02 00:00:00')- f`before 2025-02-03 04:05:06.7` # OR (field < TIMESTAMP '2025-02-03 04:05:06.7')- f`after 2025-Q2` # OR (field >= TIMESTAMP '2025-06-01 00:00:00')- f`after 2025-02-03-WK` # OR (field >= TIMESTAMP '2025-02-09 00:00:00')- f`after 2025-02-03 04:05:06.7` # OR (field >= TIMESTAMP '2025-02-03 04:05:06.7')- f`before tuesday` # OR (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7+1)::integer))- f`after tuesday` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7)::integer))- f`starting tuesday` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7+1)::integer))- f`through tuesday` # OR (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7)::integer))- f`last monday to next friday` # OR (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7+1)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>((5-((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)+6)%7+1)::integer))- f`2025-01-02 03:04:05 to 2026-07-08 04:05:06` # OR (field >= TIMESTAMP '2025-01-02 03:04:05' AND field < TIMESTAMP '2026-07-08 04:05:06')- f`today or tomorrow` # OR (field >= DATE_TRUNC('day', LOCALTIMESTAMP) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) AND field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(2)::integer))-- negation- f`not null` # AND (field IS NOT NULL)- f`not now` # AND ((field != LOCALTIMESTAMP OR field IS NULL))- f`not today` # AND (field < DATE_TRUNC('day', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer))- f`not yesterday` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(1)::integer) OR field >= DATE_TRUNC('day', LOCALTIMESTAMP))- f`not tomorrow` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(2)::integer))- f`not 2025` # AND (field < TIMESTAMP '2025-01-01 00:00:00' OR field >= TIMESTAMP '2026-01-01 00:00:00')- f`not 2025-Q1` # AND (field < TIMESTAMP '2025-01-01 00:00:00' OR field >= TIMESTAMP '2025-04-01 00:00:00')- f`not 2025-01` # AND (field < TIMESTAMP '2025-01-01 00:00:00' OR field >= TIMESTAMP '2025-02-01 00:00:00')- f`not 2025-02-03-WK` # AND (field < TIMESTAMP '2025-02-02 00:00:00' OR field >= TIMESTAMP '2025-02-09 00:00:00')- f`not 2025-02-03` # AND (field < TIMESTAMP '2025-02-03 00:00:00' OR field >= TIMESTAMP '2025-02-04 00:00:00')- f`not 2025-02-03 04` # AND (field < TIMESTAMP '2025-02-03 04:00:00' OR field >= TIMESTAMP '2025-02-03 05:00:00')- f`not 2025-02-03 04:05` # AND (field < TIMESTAMP '2025-02-03 04:05:00' OR field >= TIMESTAMP '2025-02-03 04:06:00')- f`not 2025-02-03 04:05:06` # AND ((field != TIMESTAMP '2025-02-03 04:05:06' OR field IS NULL))- f`not 2025-02-03 04:05:06.7` # AND ((field != TIMESTAMP '2025-02-03 04:05:06.7' OR field IS NULL))- f`not this year` # AND (field < DATE_TRUNC('year', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('year', LOCALTIMESTAMP))+make_interval(years=>(1)::integer))- f`not this quarter` # AND (field < DATE_TRUNC('quarter', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('quarter', LOCALTIMESTAMP))+make_interval(months=>(1*3)::integer))- f`not this month` # AND (field < DATE_TRUNC('month', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('month', LOCALTIMESTAMP))+make_interval(months=>(1)::integer))- f`not this week` # AND (field < (DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY) OR field >= ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(1*7)::integer))- f`not this day` # AND (field < DATE_TRUNC('day', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer))- f`not this hour` # AND (field < DATE_TRUNC('hour', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('hour', LOCALTIMESTAMP))+make_interval(hours=>(1)::integer))- f`not this minute` # AND (field < DATE_TRUNC('minute', LOCALTIMESTAMP) OR field >= (DATE_TRUNC('minute', LOCALTIMESTAMP))+make_interval(mins=>(1)::integer))- f`not last year` # AND (field < (DATE_TRUNC('year', LOCALTIMESTAMP))-make_interval(years=>(1)::integer) OR field >= DATE_TRUNC('year', LOCALTIMESTAMP))- f`not last quarter` # AND (field < (DATE_TRUNC('quarter', LOCALTIMESTAMP))-make_interval(months=>(1*3)::integer) OR field >= DATE_TRUNC('quarter', LOCALTIMESTAMP))- f`not last month` # AND (field < (DATE_TRUNC('month', LOCALTIMESTAMP))-make_interval(months=>(1)::integer) OR field >= DATE_TRUNC('month', LOCALTIMESTAMP))- f`not last week` # AND (field < ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(1*7)::integer) OR field >= (DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))- f`not last day` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(1)::integer) OR field >= DATE_TRUNC('day', LOCALTIMESTAMP))- f`not last hour` # AND (field < (DATE_TRUNC('hour', LOCALTIMESTAMP))-make_interval(hours=>(1)::integer) OR field >= DATE_TRUNC('hour', LOCALTIMESTAMP))- f`not last minute` # AND (field < (DATE_TRUNC('minute', LOCALTIMESTAMP))-make_interval(mins=>(1)::integer) OR field >= DATE_TRUNC('minute', LOCALTIMESTAMP))- f`not next year` # AND (field < (DATE_TRUNC('year', LOCALTIMESTAMP))+make_interval(years=>(1)::integer) OR field >= (DATE_TRUNC('year', LOCALTIMESTAMP))+make_interval(years=>(2)::integer))- f`not next quarter` # AND (field < (DATE_TRUNC('quarter', LOCALTIMESTAMP))+make_interval(months=>(1*3)::integer) OR field >= (DATE_TRUNC('quarter', LOCALTIMESTAMP))+make_interval(months=>(2*3)::integer))- f`not next month` # AND (field < (DATE_TRUNC('month', LOCALTIMESTAMP))+make_interval(months=>(1)::integer) OR field >= (DATE_TRUNC('month', LOCALTIMESTAMP))+make_interval(months=>(2)::integer))- f`not next week` # AND (field < ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(1*7)::integer) OR field >= ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(2*7)::integer))- f`not next day` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(2)::integer))- f`not next hour` # AND (field < (DATE_TRUNC('hour', LOCALTIMESTAMP))+make_interval(hours=>(1)::integer) OR field >= (DATE_TRUNC('hour', LOCALTIMESTAMP))+make_interval(hours=>(2)::integer))- f`not next minute` # AND (field < (DATE_TRUNC('minute', LOCALTIMESTAMP))+make_interval(mins=>(1)::integer) OR field >= (DATE_TRUNC('minute', LOCALTIMESTAMP))+make_interval(mins=>(2)::integer))- f`not monday` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7+1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7)::integer))- f`not last monday` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7+1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7)::integer))- f`not next monday` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>((1-((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)+6)%7+1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>((1-((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)+6)%7+2)::integer))- f`not 3 days ago to now` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(3)::integer) OR field >= LOCALTIMESTAMP)- f`not 3 weeks ago to now` # AND (field < ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(3*7)::integer) OR field >= LOCALTIMESTAMP)- f`not 5 days ago` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(4)::integer))- f`not 5 days from now` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(5)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(6)::integer))- f`not 5 days ago for 2 days` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer) OR field >= ((DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer))+make_interval(days=>(2)::integer))- f`not 5 days from now for 2 days` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(5)::integer) OR field >= ((DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(5)::integer))+make_interval(days=>(2)::integer))- f`not 5 weeks ago for 2 months` # AND (field < ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(5*7)::integer) OR field >= (((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))-make_interval(days=>(5*7)::integer))+make_interval(months=>(2)::integer))- f`not 5 weeks from now for 2 months` # AND (field < ((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(5*7)::integer) OR field >= (((DATE_TRUNC('week', LOCALTIMESTAMP + INTERVAL '1' DAY) - INTERVAL '1' DAY))+make_interval(days=>(5*7)::integer))+make_interval(months=>(2)::integer))- f`not last 5 days` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(5)::integer) OR field >= DATE_TRUNC('day', LOCALTIMESTAMP))- f`not next 5 days` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(6)::integer))- f`not 5 days` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>(4)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>(1)::integer))- f`not before 2025-Q2` # AND (field >= TIMESTAMP '2025-03-01 00:00:00')- f`not before 2025-02-03-WK` # AND (field >= TIMESTAMP '2025-02-02 00:00:00')- f`not before 2025-02-03 04:05:06.7` # AND (field >= TIMESTAMP '2025-02-03 04:05:06.7')- f`not after 2025-Q2` # AND (field < TIMESTAMP '2025-06-01 00:00:00')- f`not after 2025-02-03-WK` # AND (field < TIMESTAMP '2025-02-09 00:00:00')- f`not after 2025-02-03 04:05:06.7` # AND (field < TIMESTAMP '2025-02-03 04:05:06.7')- f`not before tuesday` # AND (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7+1)::integer))- f`not after tuesday` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7)::integer))- f`not starting tuesday` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7+1)::integer))- f`not through tuesday` # AND (field >= (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-2+6)%7)::integer))- f`not last monday to next friday` # AND (field < (DATE_TRUNC('day', LOCALTIMESTAMP))-make_interval(days=>((((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)-1+6)%7+1)::integer) OR field >= (DATE_TRUNC('day', LOCALTIMESTAMP))+make_interval(days=>((5-((EXTRACT(dow FROM LOCALTIMESTAMP)::integer+1)-1)+6)%7+1)::integer))- f`not 2025-01-02 03:04:05 to 2026-07-08 04:05:06` # AND (field < TIMESTAMP '2025-01-02 03:04:05' OR field >= TIMESTAMP '2026-07-08 04:05:06')