繁体   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