आपके प्रयास में दो संशोधन हैं। सबसे पहले, मुझे नहीं लगता कि आप एक ऑपरेटर को SFUNC के रूप में उपयोग कर सकते हैं, इसलिए आपको प्रतिच्छेदन करने के लिए एक नामित फ़ंक्शन को परिभाषित करने और उसका उपयोग करने की आवश्यकता है।
CREATE or REPLACE FUNCTION int_tsrange(a tsrange, b tsrange)
returns tsrange language plpgsql as
'begin return a * b; end';
दूसरे, किसी श्रेणी के लिए डिफ़ॉल्ट मान रिक्त श्रेणी है - इसलिए प्रतिच्छेदन हमेशा खाली रहेगा। आपको सीमा को एक अनंत श्रेणी में प्रारंभ करने की आवश्यकता है '[,]'
कुल शुरू करने के लिए। तब समग्र परिभाषा इस तरह दिखती है:
CREATE AGGREGATE intersection ( tsrange ) (
SFUNC = int_tsrange,
STYPE = tsrange,
INITCOND = '[,]'
);