хранимая процедура в 2005 году на основе даты - PullRequest
0 голосов
/ 15 июня 2011

я могу написать хранимую процедуру, удалить строку в таблице на основе даты

create proc uspInvoicePaymentsdelete3
@PaymentDate datetime
as
begin
delete from tblInvoicePaymentDetails where PaymentDate=@PaymentDate
end

, но строка не удалена. Я отправляю значение параметра «15.06.2011 15:40:18 PM», ноВ моем sql server2005 он занимал 24-часовой формат, поэтому не удаляются никакие строки о том, как изменить даты. (Формат даты таблицы и дата параметра имеют одинаковый формат, но хранимая процедура преобразует формат 24-часовой)

 delete from tblInvoicePaymentDetails where PaymentDate='6/15/2011 3:40:18 PM'

, но мое требованиеdatetime учитывает также secounds,

  • проблема в том, что я отправляю дату параметра и дату базы данных одновременно, но выходные данные не удалены, что является проблемой и как написать хранимую процедуру

Пожалуйста, дайте мне правильное решение

      Name            Date           amount  id
    hemanth 6/15/2011 3:40:18 PM    100 1003
    hemanth 6/15/2011 3:40:42 PM    100 1003

Благодарю вас, Гемант

1 Ответ

1 голос
/ 01 июля 2011

Проблема может быть связана с тем, что, как указал @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. Может быть, такая ситуация невозможна с вашим приложением, и вам не нужно беспокоиться об этом. Я просто хотел убедиться, что вы знаете, что технически можно было бы удалить более одной записи, когда вы используете в качестве параметра неполное значение даты / времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...