如何以特定格式将日期和时间插入 SQL 服务器数据库?
How Do I insert Date and Time into SQL Server database in certain format?
我在 C# 中使用 Windows 表单。
我正在尝试在包含 DateTime
列的 SQL 服务器数据库中填写 table。
现在,当我的 PC 时钟格式为 dd-MM-yyyy
时,当我尝试使用以下查询插入数据时,出现错误
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
代码:
SqlConnection cn = new SqlConnection("Data Source=PCN11-TOSH;Initial Catalog=mydb;Integrated Security=True");
cn.Open();
SqlCommand cm = new SqlCommand("Insert into Orders (Order_number, Phone, DateTime, address ) values ('"
+ textBox1.Text + "','" + textBox2.Text + "', '"+ DateTime.Now +"' ,'"
+ textBox3.Text + "')");
cm.Connection = cn;
cm.ExecuteNonQuery();
cn.Close();
但是当我将 PC 的时钟格式更改为 yyyy-MM-dd
时,它工作正常。似乎 SQL 服务器只接受 yyyy-MM-dd
格式。
我的问题是:如何根据我 PC 的时钟格式 (dd-MM-yyyy
) 将 DateTime
插入 SQL 服务器列?
谢谢
不要连接您的 sql 命令文本,而是使用参数化查询。
它不仅可以保护你免受 sql 注入,而且它使用强类型参数(例如,参数应该具有 SqlDbType.DateTime
类型来传递日期时间值),因此问题将消失.
var cm = new SqlCommand("Insert into Orders (Order_number, Phone, DateTime) values (@OrderNumber, @Phone, @DateTime)");
cm.Parameters.Add("@OrderNumber", SqlDbType.VarChar);
cm.Parameters["@OrderNumber"].Value = textBox1.Text;
cm.Parameters.Add("@Phone", SqlDbType.VarChar);
cm.Parameters["@phone"].Value = textBox2.Text;
cm.Parameters.Add("@DateTime", SqlDbType.DateTime);
cm.Parameters["@DateTime"].Value = DateTime.Now;
我在 C# 中使用 Windows 表单。
我正在尝试在包含 DateTime
列的 SQL 服务器数据库中填写 table。
现在,当我的 PC 时钟格式为 dd-MM-yyyy
时,当我尝试使用以下查询插入数据时,出现错误
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value
代码:
SqlConnection cn = new SqlConnection("Data Source=PCN11-TOSH;Initial Catalog=mydb;Integrated Security=True");
cn.Open();
SqlCommand cm = new SqlCommand("Insert into Orders (Order_number, Phone, DateTime, address ) values ('"
+ textBox1.Text + "','" + textBox2.Text + "', '"+ DateTime.Now +"' ,'"
+ textBox3.Text + "')");
cm.Connection = cn;
cm.ExecuteNonQuery();
cn.Close();
但是当我将 PC 的时钟格式更改为 yyyy-MM-dd
时,它工作正常。似乎 SQL 服务器只接受 yyyy-MM-dd
格式。
我的问题是:如何根据我 PC 的时钟格式 (dd-MM-yyyy
) 将 DateTime
插入 SQL 服务器列?
谢谢
不要连接您的 sql 命令文本,而是使用参数化查询。
它不仅可以保护你免受 sql 注入,而且它使用强类型参数(例如,参数应该具有 SqlDbType.DateTime
类型来传递日期时间值),因此问题将消失.
var cm = new SqlCommand("Insert into Orders (Order_number, Phone, DateTime) values (@OrderNumber, @Phone, @DateTime)");
cm.Parameters.Add("@OrderNumber", SqlDbType.VarChar);
cm.Parameters["@OrderNumber"].Value = textBox1.Text;
cm.Parameters.Add("@Phone", SqlDbType.VarChar);
cm.Parameters["@phone"].Value = textBox2.Text;
cm.Parameters.Add("@DateTime", SqlDbType.DateTime);
cm.Parameters["@DateTime"].Value = DateTime.Now;