Well, you can take a direct approach and use a regular expression like in the example that you've found:
SELECT
REGEXP_SUBSTR('Chicago, IL, April 20, 2015 - etc etc', '(January|February|March|April|May|June|July|August|September|October|November|December) [0-9]{1,2}, [0-9]{4}')
FROM dual;
But this will only work properly if all the dates are in the exact same format. Full month name with first letter uppercased, space, day, comma, space, 4-digit year. If there can be more than one space or no space at all, use \s*
instead of spaces in the regular expression. If the month name isn't necessarily initcap, use initcap()
on source or case-insensitive flag for regexp_substr
function.
Additionally, this will catch bogus dates that fit the format, like "April 99, 1234", you'll have to filter them later.