आपकी क्वेरी को लगभग अस्पष्टता तक सरल बना दिया गया है, लेकिन कुछ इस तरह काम करना चाहिए।
SELECT ...
FROM ....
INNER JOIN (SELECT '2017-12-01' AS beginDate, '2017-12-30' AS endDate) AS dr
ON (ship.dateShipped BETWEEN dr.beginDate AND dr.endDate)
OR (fulfill.datefulfilled BETWEEN dr.beginDate AND dr.endDate)
...
यह वास्तव में आपको @ वेरिएबल का उपयोग नहीं करने देगा?