Probably because GETDATE returns a value that is accurate to the millisecond: so each time you call it to UPDATE your values, you get a new value that is almost certainly different from the value you stored in the database. As a result, the WHERE condition fails to match any records.
Try using
CONVERT(DATE, GETDATE())
instead:
UPDATE ... WHERE CONVERT(DATE, [date])=CONVERT(DATE, GETDATE())
But please, don't do that! You are using a textbox value directly to construct your SQL string - and that's unbelievably dangerous! 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.
You can't use a parameter to specify the column name, so you will have to look at a more sp]sophisticated system of specifying the column - unless you want your best mate to delete your DB just to see if he can...