簡體   English   中英

如何從C#在SQL存儲過程中傳遞日期值

[英]How to pass date value in sql stored procedure from c#

我需要在表中插入購買日期。

我的桌子

purchaseDate date (data type)

C#代碼

string purchaseDate = "";
public string _PurchaseDate
{
    get { return purchaseDate; }
    set
    {
        DateTime purchaseDateF = DateTime.Parse(value.Trim());
        purchaseDate = purchaseDateF.ToString("dd-MM-yy");
    }
}

我存儲的Proc

@purchasedate,

insert into tbl_name (purchaseDate) values (@purchasedate)

如果我通過PurchaseDate =“ 29-may-14”,則將nvarchar轉換為日期時顯示錯誤。

我在哪里出錯?

謝謝...

不要將其作為字符串傳遞。 將其作為日期/時間傳遞。 實際上,我不清楚_PurchaseDate為什么是string而不是DateTime 但是,不管它是存儲在您的應用程序:當您添加它作為一個參數,轉換(解析)到一個DateTime 第一 ,並添加鍵入日期。 不是string

在理想的世界中:

public DateTime PurchaseDate {get;set;}
//...
cmd.Parameters.AddWithValue("purchasedate", obj.PurchaseDate);

然后,僅此而已。

而不是以某種格式插入它,而是以正常的DateTime值插入,然后在檢索時將其轉換為格式化的字符串...

將C#數據類型從字符串更改為日期:

    public DateTime _PurchaseDate{get;set;}

用“ _PurchaseDate”進行插入,我猜您想以某種格式在客戶端應用程序上顯示它,因此添加如下屬性:

    public string _StrPurchaseDate
    {
        get
        {
            return ((DateTime)_PurchaseDate).ToString("dd-MM-yyyy");
        }
        set
        {

        }
    }

現在只需將日期作為字符串檢索,除非您真的需要將其存儲為sql中的某種格式

注意:如果數據庫的Date列包含NULLS,則從數據庫中檢索值時它將中斷,因此請更改為可為null的DateTime數據類型,然后在轉換時檢查是否為null:

    public DateTime? _PurchaseDate{get;set;}

    public string _StrPurchaseDate
    {
        get
        {
            if (_PurchaseDate != null)
            {
                return ((DateTime)_PurchaseDate).ToString("dd-MM-yyyy");
            }
            else
            {
                return "";
            }
        }
        set
        {

        }
    }

在存儲過程中使用CAST或CONVERT可以將string值轉換為適當的數據庫類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM