You made the mistake of writing you automation without taking your domain into consideration. Let look at your selector
//table[@class='ui-datepicker-calendar']//td[@data-month='9']//a[.='22']
The first part is absolutely fine, you go straight and root yourself in the interesting sub component. On the second value, you define that september (data-month=9) will always be available, which it isn't since your application under test doesn't give data attributes to disabled fields but marks them just as
ui-datepicker-unselectable
If you just exchange the "9" in your selector for a 10, it will work again.
Of course you might not want to have an automation that needs to be fixed every month, since the change of a month is a quite predictable event so if you want to select the 22nd of the current month you might wanna try something along the lines of
LocalDate currentdate = LocalDate.now();
String selector = "//table[@class='ui-datepicker-calendar']//td[@data-month='"+currentdate.getMonth()+"']//a[.='22']"
WebDriverWait wait2=new WebDriverWait(driver,5);
WebElement startdate = wait2.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(selector)));
startdate.click();
which would insert the current month into your selector. If that isn't your intended behaviour, you might want to actually define a function to construct your selector according to your specification.