使用不同的日期系统设置向数据库添加日期



我想将日期选择器中的日期保存到sqlserver中。

但是当pc上使用不同的日期格式时,日期会改变年月日。

例如:

我的系统上的短日期格式:dd- mm -yyyy

DatePicker: 01 - 2015年7月——

当我将日期保存到数据库时,它将被保存为01-07-2015。

但是当我更改系统日期格式时,日期和月份被更改了

我的系统上的短日期格式:dd-MM-yyyy

DatePicker: 01 - 2015年7月——

当我将日期保存到数据库时,它将被保存为07-01-2015。

代码:

//Set dateTimePicker to DateTime variable
DateTime dateSales = dateTimePicker1.Value;
 
// Create SQL connection
System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection(Connection.connectionString());
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
//Create query with values and execute query
cmd.CommandText = "Insert into CarsSellout (CustomerID, dateSales) VALUES ('" + CustomerID + "', '" + dateSales + ")";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();

我知道SQL查询谁没有参数化!

我怎么能解决这个问题?到目前为止,通过编程改变格式还没有成功!

请帮帮我!!

你有一个选择错误数据类型的坏习惯。

如果您将DateTime值保存到SQL Server,则将其保存为DateTime。Do NOT保存它们的字符串表示。

这就是为什么,改变你的dateSales列类型为datetimedatetime2和传递你的dateSales直接到你的参数化查询。

DateTime dateSales = dateTimePicker1.Value;
using(var con = new SqlConnection(Connection.connectionString()))
using(var cmd = con.CreateCommand())
{
    cmd.CommandText = "Insert into CarsSellout(CustomerID, dateSales) VALUES(@id, @date)";
    cmd.Parameters.Add("@id", SqlDbType.Int).Value = CustomerID;
    cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dateSales;
    con.Open();
    cmd.ExecuteNonQuery();
}

我强烈怀疑你的CustomerID应该是数字类型(基于它的名字),这就是为什么在我的例子中把它的参数写为SqlDbType.Int。如果不是(因为您使用了单引号),则将其参数更改为相关的SqlDbType

相关内容

  • 没有找到相关文章

最新更新