使用不同的日期系统设置将日期添加到数据库
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
列类型更改为 datetime
或 datetime2
并将您的 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
.
我想将日期从日期选择器保存到 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
列类型更改为 datetime
或 datetime2
并将您的 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
.