For starters, never 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?
The example you show doesn't have that problem, but it has others and indicates that the rest of your app is vulnerable and needs to be fixed as soon as possible.
The code you show will fail at some point because the data is be8ing passed as a string, and it needs to be stored as a DATETIME column in SQL to be of any use to anyone. That means SQL has to "guess" what the format you passed it is, and it will get it wrong sometimes.
Pass everything as a parameter and these problems go away.
If you are using a text column in SQL to store your checkbox results, that's inefficient - use a second table to translate the text into an "enum" style number (and use JOIN when you want the string form, SQL is very good at those) You can then use the Tag field of the checkbox to store that enum value and pass that through to SQL as a parameter.