Dopo aver giocato con le cose, ho capito qual è il problema:field.types
deve essere un elenco NOME vettore, non semplicemente un elenco; inoltre i nomi delle righe non devono essere inclusi altrimenti abbiamo bisogno di tre tipi di campo. Per l'esempio sopra, quanto segue funziona correttamente:
dbWriteTable(con, name="table_name", value=df,
field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)