Hola, yo lo que hago para evitarme problemas de fechas es utilizar la función "convert" de SQL (no sé si existe en MySQL, hablo de SQL Server que es el motor de BBDD con el que trabajo, en cualquier caso seguro que tiene alguna similar).
Siempre uso las fechas con formato "aaaa-mm-dd" (creo que se llama formato canónico, y para mí es el mejor formato, se debería estandarizar su uso en todas partes y todos saldríamos ganando -apunte personal-) y para ello envío la fecha metiéndola en la sentencia de SQL:
convert(datetime, 'aaaa-mm-dd', 120)
Con ese 120 le estoy indicando a la BBDD que el formato de la fecha que le paso es efectivamente el 'aaaa-mm-dd'. Así sé que a la BBDD siempre llegan las fechas con el mismo formato y que me da igual la configuración que tenga la BBDD, siempre las va a saber interpretar.
Luego, en la parte de VB.NET, tengo una función que es la que se encarga de formatear la fecha al formato adecuado (es decir, 'aaaa-mm-dd').
No sé si el DateTimePicker te puede dar el año, el mes y el día por separado, si lo hace simplemente con hacer algo así lo tendrías, como:
DateTime.Year & "-" & DateTime.Month & "-" & DateTime.Day
(usando los métodos/propiedades correspondientes al DateTimePicker, lógicamente).
Si no te lo facilita, entonces tendrías que hacerte una pequeña función que lea la fecha en una "string" y luego separe cada parte de forma correcta usando por ejemplo el método .Substring de la clase "String".
Espero haberte ayudado...
Saludos