Po zabawie z rzeczami zdałem sobie sprawę, w czym jest problem:field.types
musi być NAMED listą wektor, a nie tylko lista; dodatkowo nie należy podawać nazw wierszy, w przeciwnym razie potrzebujemy trzech typów pól. W powyższym przykładzie działa poprawnie:
dbWriteTable(con, name="table_name", value=df,
field.types = c(dte="date", val="double(20,10)"), row.names=FALSE)