The format you have attached to a variable just impacts how the value is displayed, not what values are stored in the variable.
So if your date varaible is actually a date value with the YYMMN6. format attached to it your WHERE statement should continue to use normal date literals. Also because your date format is not displaying the day of the month your actual value could be any of the days of that month. If you know that your data always is set to the first of the month then you could use = in the WHERE clause.
where date='01JUL2017'd
Otherwise you need to test for the full range of dates.
where '01JUL2017'd <= date < '01AUG2017'd
or
where intnx('month',date,0,'b') = '01JUL2017'd
or
where put(date,yymmn6.) = '201707'
... View more