First off, don't do it like that! Never 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. Always use Parameterized queries instead.
When you concatenate strings, you cause problems because SQL receives commands like:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
The quote the user added terminates the string as far as SQL is concerned and you get problems. But it could be worse. If I come along and type this instead: "x';DROP TABLE MyTable;--" Then SQL receives a very different command:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;
Which SQL sees as three separate commands:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
A perfectly valid SELECT
DROP TABLE MyTable;
A perfectly valid "delete the table" command
And everything else is a comment.
So it does: selects any matching rows, deletes the table from the DB, and ignores anything else.
So ALWAYS use parameterized queries! Or be prepared to restore your DB from backup frequently. You do take backups regularly, don't you?
Secondly, never format dates to strings and try to compare them: if you do, you get a string comparison which means that the total result is based on the first different character in the pair of strings. That very bad for sorting or comparing dates as 01-12-2020 is before 31-01-1990.
You use a DateTimePicker to let the user select the date, so don't convert that value to a string, use the value directly and pass that as a DateTime to your query. Compare that DATETIME value with your database DATETIME column
FeesDate
and the comparison will work.
And probably, so will your code - but fix your whole app to remove the string concatenation, or you will lose your DB.