我可以编写存储过程根据日期删除表中的行
create proc uspInvoicePaymentsdelete3
@PaymentDate datetime
as
begin
delete from tblInvoicePaymentDetails where PaymentDate=@PaymentDate
end
但行未删除我发送的参数值是'6/15/2011 3:40:18 PM'但它在我的sql server2005中采用24小时格式,因此没有删除行如何更改日期。(表日期格式和参数日期是相同的格式,但存储过程转换为24小时格式)
delete from tblInvoicePaymentDetails where PaymentDate='6/15/2011 3:40:18 PM'
但我的要求是日期时间也考虑了一些,
请给我正确的解决方案
Name Date amount id
hemanth 6/15/2011 3:40:18 PM 100 1003
hemanth 6/15/2011 3:40:42 PM 100 1003
感谢你 hemanth
答案 0 :(得分:1)
问题可能与这样一个事实有关,正如@Andrew在他对你的问题的评论中指出的那样,你的表中的日期时间值也包含毫秒,而你传递的值不包含毫秒。
如果是这样,您可以像这样更改DELETE语句的WHERE子句:
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
值。也许,您的应用程序无法实现这样的情况,因此您无需担心这一点。我只是想确保您知道,从技术上讲,当您使用不完整的日期/时间值作为参数时,可以删除多个记录。