簡體   English   中英

C#和SQL Server日期時間格式

[英]C# and SQL server datetime format

我有以下C#方法來更新SQL Server中的值:

public void Save()
{
    int TotalFail = TotalRecords - SuccessCount;

    DataAccess_MSSQLServer oDAM = new DataAccess_MSSQLServer();

    try
    {                                                                                                                                                                                                                                           
        oDAM.Update("Update TBL_FulfilmentBatch SET ReturnDate = " + oDAM.GetFieldValueSQL(processDate) + ", TotalSuccess = " + oDAM.GetFieldValueSQL(SuccessCount) + ", TotalFail = " + oDAM.GetFieldValueSQL(TotalFail) + ", ProcessedDate = " + oDAM.GetFieldValueSQL(DateTime.Now.ToString("yyyyMMddHHmmss")) + " WHERE FulfilmentHouseID = (SELECT FulfilmentHouseID FROM TBL_fulfilmentHouse WHERE [Description] Like 'Current') AND BatchNumber = " + oDAM.GetFieldValueSQL(batchNumber));
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace);
    }

}

哪里

oDAM.GetFieldValueSQL

是用於格式化SQL語句的字符串等的方法。

字符串processDate的值是: 2015-07-23

數據庫中與之對應的字段是日期時間字段。

我也有:

ProcessedDate = " + oDAM.GetFieldValueSQL(DateTime.Now.ToString("yyyyMMddHHmmss"))

它在數據庫中插入一個C#日期時間字段。

這兩個日期時間字段現在應該具有相同的日期格式。

問題是,當插入數據庫時​​,它們如下所示:

在此處輸入圖片說明

格式相反。

為什么會這樣呢?

它們都以相同格式作為字符串傳遞。

表中沒有任何內容告訴它轉換為特定的日期時間格式。

ProcessedDate列的較早條目為美國格式。

它是否也認為該日期也采用美國格式?

我能做什么?

您應該使用參數化查詢。

如果繼續嘗試,最終您將設法將string調整為“有效”的格式。 對於當前的數據庫實例,運行計算機上客戶端應用程序。 它可能會在每月的13號(當幾天誤記了幾個月)中斷。

ADO.NET提供程序可以為您轉換DateTime和其他原始類型,並同時防止SQL注入漏洞。 如果重用DbCommand您甚至可能會看到性能提高。

暫無
暫無

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

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