如何以特定格式将日期和时间插入 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;