Driver JDBC com defeito
Acontece que o problema era o driver MS JDBC. Eu tentei todas as combinações possíveis de tipos de data e conversões de data e nada funcionou. Depois de muita pesquisa (deveria ter feito isso primeiro!), vi um comentário em uma entrada SO mais antiga que sugeria que o problema era o driver JDBC da versão 3 da Microsoft. Eu tenho o driver mais recente, versão 4.algo, e o problema desapareceu.
Obrigado a todos que tentaram ajudar. Agradecimentos especiais a você Mike por dedicar um tempo para postar uma solução.
-=bee