max совершенно точно работает для почти любых типов данных, даже binary можно сортировать (но может быть не реализовано)
Если нужно добавить много таких max(date) в датафрейм, то оконная (аналитическая) функция поможет! См. max(date) over partition by {fields}. Если такая дата одна, сначала сгруппировать исходный датафрейм, потом приджойнить или добавить литералом.
Чтобы понять, как лучше, нужны ответы на два вопроса:
1. max по всему датафрейму, или есть какие-то поля, для которых нужна максимальная дата?
2. Используется dataframe API или SQL? Как выглядит то, что не работает? ))