Hola Carlos!!
Seguido veo este tipo de problemas con fechas y servidores como Mysql, Mariadb, firebird, sql server. en mi caso lo que siempre trato es de enviarlo directamente del campo de la tabla o si no por medio de una variable, de esta forma no hay que hacer ninguna conversión, ni usar SET DATE, a mi me ha funcionado desde cerca de 5 años.
Por ejemplo si el valor esta en una tabla o cursor localTabla.CampoDT lo envió como parámetro
Update Tabla Set campoDT = ?localTabla.CampoDT
insert into tabla (campodt) values (?localTabla.CampoDT)
La otra forma es verificar desde VFP que tipo de valor es una variable y convertirla al valor que voy a reemplazar en el servidor, es decir si tengo un textbox donde el usuario capturo un valor o lo obtuve de un archivo de texto, etc
thisform.textbox.value = "01/01/2014"
xVariable = ctod(thisform.textbox.value)
y luego la envió
Update Tabla Set campoDT = ?xVariable
Hay infinidad de situaciones pero el común denominador es que pases el valor al servidor del mismo tipo de dato, de esta forma no tienes que andar convirtiendo o armando, etc.
Nota: Puse un ejemplo de un campo DATE, porque no recuerdo el comando para convertir a datetime.
saludos
Antonio Meza