Проблема немедленная заключается в том, что:
, date_changed = " + date.ToString("dd-MM-yyyy") + "
станет
, date_changed = 15-01-2020
, что: -2006
, то есть (из-за того, как даты сохранено) некоторое время в июле 1894 года.
A bad Исправление для этого было бы добавить кавычки, но это: bad - у него есть ряд проблем с делать с интернационализацией (08-01 первое августа? 8 января?), SQL инъекция, и т. д. c.
правильное исправление - использовать параметры повсюду , Например:
cmd7.CommandText = @"
update stock_over_time
set product_qty = product_qty - @qty,
date_changed = @date
where product_name = @pname";
Однако для этого необходимо добавить параметры со значениями.
Простейший способ сделать это будет с помощью Dapper:
string pname = ...
int qty = ...
DateTime date = ...
con.Execute(@"
update stock_over_time
set product_qty = product_qty - @qty,
date_changed = @date
where product_name = @pname",
new { pname, qty, date });
Примечание: все доступа к вашей базе данных должны быть параметризованы, как описано выше, или с использованием необработанного ADO. NET, или с использованием таких инструментов, как EF et c , Не только это одно место; везде .