Проблема может быть связана с тем, что, как указал @Andrew в своем комментарии к вашему вопросу, значения datetime в вашей таблице также содержат миллисекунды, в то время как вы передаете значение, которое не содержит миллисекунд.
Если это так, вы можете изменить предложение WHERE вашего оператора DELETE следующим образом:
WHERE PaymentDate >= @PaymentDate
AND PaymentDate < DATEADD(second, 1, @PaymentDate)
Обратите внимание, что это может привести к удалению более чем одной строки. Например, у вас есть данные следующим образом:
Name PaymentDate amount id
------- ----------------------- ------ ----
… … … …
hemanth 2011-06-15 15:40:18.550 100 1003
hemanth 2011-06-15 15:40:18.987 100 1003
hemanth 2011-06-15 15:40:42.363 100 1003
… … … …
Если мы игнорируем миллисекунды, то здесь есть две строки с одинаковым значением PaymentDate
. Может быть, такая ситуация невозможна с вашим приложением, и вам не нужно беспокоиться об этом. Я просто хотел убедиться, что вы знаете, что технически можно было бы удалить более одной записи, когда вы используете в качестве параметра неполное значение даты / времени.