So, if you are using a DateTimePicker, why are you converting it to a string to pass it to SQL?
Simple: because your code is wide open to SQL injection attack because you are concatenating strings to form an SQL command instead of passing them as parametrized queries and sending the values in a sensible, unconverted form.
So when you write
string cmd = "INSERT INTO MyTable (dateColumn) VALUES ('" + myDateTimePicker.Value + "')";
The string presented to SQL depends on the system date and time format settings in the PC running the C# code: it could be
INSERT INTO MyTable (dateColumn) VALUES ('11 September 2013')
Or
INSERT INTO MyTable (dateColumn) VALUES ('11 09 2013')
Or
INSERT INTO MyTable (dateColumn) VALUES ('2013/9/11')
Since SQL normally expects:
INSERT INTO MyTable (dateColumn) VALUES ('2013-09-11')
there is a good chance it will complain on some PCs and not on others.
Use a parametrized query, and pass DateTime values as DateTimes, integers as integers, etc.