[英]SQL query based on condition of null date and a specific value for another field
[英]Adding Null Value To DATE Field In SQL SERVER
我有一個表,該表的字段是日期。 它允許空值。 我正在嘗試使用存儲過程向該字段添加值,但是當我傳遞null時,我得到了
“存儲過程需要@ReadyDate的值。”
這是存儲過程:
Create PROCEDURE [dbo].[sp_UpdateStatus]
@id int,
@status varchar(20),
@ReadyDate Date
AS
BEGIN
UPDATE PMF_ToolingRequests
SET status = @status,
ReadyDate = @ReadyDate
WHERE ID = @id
END
這是我用來更新字段的C#代碼。 當我也發送一個空字符串時,它會感到沮喪:
if (setReadyTime)
{
cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = DateTime.Today.ToString("yyyy/MM/dd");
}
else
{
cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = (DateTime?)null;
}
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
cmd.Parameters.Add("@status", SqlDbType.VarChar).Value = status;
我也嘗試過:
cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = null;
在某些時候,該字段沒有任何價值。 我想在條件滿足時填寫它。
做
cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = DBNull.Value;
在本質上, null
在面向對象的語言具有比略有不同的含義NULL
在你的數據庫,這是為什么
cmd.Parameters.Add("@ReadyDate", SqlDbType.Date).Value = null;
不起作用。
如果您想閱讀一下, 這是一篇有關DBNull的MSDN文章。
嘗試這個:
傳遞ReadyDate
,默認值為null
Create PROCEDURE [dbo].[sp_UpdateStatus]
@id int,
@status varchar(20),
@ReadyDate Date=null
AS
BEGIN
UPDATE PMF_ToolingRequests
SET status = @status,
ReadyDate = @ReadyDate
WHERE ID = @id
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.