'k, this doesn't look right, but it could be that I'm overlooking something ...
The function I created: CREATE FUNCTION month_trunc (timestamp without time zone) RETURNS timestamp without time zone AS 'SELECT date_trunc(''month'', $1 )' LANGUAGE sql IMMUTABLE; The query that fails: ams=# select * from traffic_logs where month_trunc(runtime) = month_trunc(now()); ERROR: Function month_trunc(timestamp with time zone) does not exist Unable to identify a function that satisfies the given argument types You may need to add explicit typecasts The query that succeeds: ams=# explain select * from traffic_logs where month_trunc(runtime) = '2003-10-01'; QUERY PLAN ------------------------------------------------------------------------------------------- Index Scan using tl_month on traffic_logs (cost=0.00..30751.90 rows=8211 width=36) Index Cond: (month_trunc(runtime) = '2003-10-01 00:00:00'::timestamp without time zone) (2 rows) I haven't mis-spelt anything that I can see ... is this something that is known not to be doable? ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match