First off, never do it like that! Do not concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
Second, why are you using a loop to retrieve data? You always load it into the same place, so a look is silly - the last set of values will always be the only one displayed.
Third, why are you converting the database value to a string, then parsing it back to a DateTime value? If it's a DateTime in the database - and if it isn't it should be - then a simple cast will give your the value without needing to check anything.
So use a parameterised query, drop the loop and check the number of rows instead (more than one is a problem somewhere), make sure your DB has teh ciorrect datatype columns, and replace the parse with a cast:
dateTimePickerStartsFrom.Value = (DateTime) reader2["startsfrom"];