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

Add date to Database with different date system settings

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

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

例如:

Short date format on my system: dd-MMM-yyyy

DatePicker: 01-july-2015

When I save the date to my database the will be saved as 01-07-2015.

但是当我更改系统日期格式时,日期和月份都发生了变化

Short date format on my system: dd-MM-yyyy

DatePicker: 01-july-2015

When I save the date to my database the will be saved as 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 未参数化的查询!

我该如何解决这个问题?到目前为止,以编程方式更改格式没有运气..!

请帮帮我!!

你有一个 bad habit as choosing the wrong data type.

如果您将 DateTime 值保存到 SQL 服务器,请将它们另存为 DateTime不要 保存它们及其字符串表示形式。

这就是为什么,将您的 dateSales 列类型更改为 datetimedatetime2 并将您的 dateSales 直接 传递给你的 parameterized query.

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.