C#和SQL服务器日期时间格式

时间:2015-10-08 11:26:48

标签: c# sql-server datetime

我有以下C#方法来更新SQL服务器中的值:

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#datetime字段。

这两个日期时间字段现在应采用相同的日期格式。

问题是当插入数据库时​​,它们如下:

enter image description here

哪种格式相反。

为什么会这样?

它们都以字符串形式传入,格式相同。

表中没有任何内容告诉它转换为特定的日期时间格式。

ProcessedDate列的旧条目采用美国格式。

它认为这个日期是美国格式吗?

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您应该使用参数化查询。

如果您继续尝试,最终您会设法将string调整为"工作的格式"。对于当前的数据库实例,在您的计算机上运行客户端应用程序。它可能在本月13日破裂(当天被误认为是几个月)。

ADO.NET提供程序可以为您翻译DateTime和其他原始类型,同时防止SQL注入漏洞。如果重复使用DbCommand,您甚至可能会看到性能提升。